"Empty delimiter" 使用 PHP explode() 函数时的警告

"Empty delimiter" Warning when using PHP explode() function

在javascript中,var myStringToArray = myString.split('');完全可以接受。

但是在PHP中,$My_String_To_Array = explode('', $My_String);抛出一个错误:

Warning: explode() Empty delimiter

PHP手册(http://php.net/manual/en/function.explode.php)解释:

If delimiter is an empty string (""), explode() will return FALSE.

那么 我应该 在当代使用什么 PHP 而不是 explode('', $My_String)

到目前为止,我能看到的备选方案是:

七年前,str_split() 是正确的选择。

但是 str_split() 是否仍在当代使用,还是我应该只看 preg_split()

或者我应该看别的东西?

我想str_split就是你想要的

str_split — Convert a string to an array

<?php
$arr = str_split("Hello");
?>

会产生

Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
}

第一个参数是必需的

explode(separator,string,limit)

[separator]: required;
[string]: required;
[limit]: alternative.

带有 void [分隔符] 的 explode 函数没有意义。

那就是all.O(∩_∩)O~

如果处理多字节 UTF-8 字符串,您应该使用:

$array = preg_split('//u', $My_String,-1, PREG_SPLIT_NO_EMPTY);

否则你可以使用:

$array = str_split($My_String);

原因在the manual中注明:

str_split() will split into bytes, rather than characters when dealing with a multi-byte encoded string.

从 PHP 版本 7.4 开始,添加了等同于 str_split 的 mbstring,因此您现在可以使用:

$array = mb_str_split($my_string);

mb_str_split manual page