"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)
?
到目前为止,我能看到的备选方案是:
split("", $My_String)
- 从 PHP 5.3.0 开始弃用
str_split($My_String)
preg_split('//', $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);
在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)
?
到目前为止,我能看到的备选方案是:
split("", $My_String)
- 从 PHP 5.3.0 开始弃用
str_split($My_String)
preg_split('//', $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);