在 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()
?
或者我应该看看其他东西吗?
最佳答案
如果处理多字节 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);
关于php - "Empty delimiter"使用PHP explode()函数时出现警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43347404/