php - "Empty delimiter"使用PHP explode()函数时出现警告

标签 php split explode php-7

在 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);

mb_str_split manual page

关于php - "Empty delimiter"使用PHP explode()函数时出现警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43347404/

相关文章:

scala - 在 apache Spark 数据框中分解数组

javascript - 从 javascript 接收字符串时 phpexplode() 不起作用

PHP:仅更改 URL 字符串的一部分?

php - MySQL - 如何连接两个或多个具有多个 ID 的表?

php - 如果名称已在数据库中,则更新 MYSQL 表

php - 无法使用 jQuery AJAX 获取从 PHP-MYSQL 生成的数据的值

Python:拆分列表的元素

php - 显示一个包含多列的表,每列的条件不同 PHP MySQL

javascript - 在 JavaScript 中将字符串从 url 中删除

javascript - 拆分而不丢失分隔符