【发布时间】:2019-12-22 20:13:30
【问题描述】:
这可能是一件容易解决的事情,但我仍然要问,因为它不应该首先发生。
我有这个简单的字符串:24.00C 48%
现在,当在此字符串上使用 explode() 函数时,它应该返回一个包含 2 个元素的数组。
$str = "24.00C 48%";
$str_array = explode(" ", $str);
预期结果
$str_array[0] = 24.00C$str_array[1] = 48%
实际发生的情况
数组的第一个元素是正确的,它包含它应该包含的内容 (24.00C) 现在数组的第二个元素是空的,所以我使用 print_r 检查了数组实际包含的内容
现在它返回的是最让我困惑的。
Array ( [0] => 24.00C [1] => [2] => [3] => [4] => [5] => [6] => [7] => 48% )
如您所见,第一个元素很好,但之后它并没有真正做到它应该做的......
现在我的问题是:
有谁知道为什么会发生这种情况以及如何使explode 正常工作?
另外,为什么48% 是第 7 个元素而不是第 3 个,例如有什么具体原因吗?
【问题讨论】:
-
您有隐藏的空白字符。尝试做
explode(' ', trim($str)) -
@treyBake
trim将无济于事,因为隐藏的空格位于字符串内部,而不是末尾。 -
当您对
$str_array = preg_split("/\s+/", $str);运行拆分时会得到什么,其中\s+匹配1+ 个空白字符。 -
快速修复:
array_filter(explode(" ", $str)) -
@Freddy789 尝试替换是否存在类似
$str = preg_replace('!\s+!', ' ', $str);之后的任何空格$array=explode(" ", $str);来源:stackoverflow.com/questions/2368539/…