【问题标题】:Explode() function not working as expectedExplode() 函数未按预期工作
【发布时间】: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/…

标签: php arrays explode


【解决方案1】:

我认为您对如何打印有误,它应该可以正常工作。

代码:

$str = "24.00C 48%";
$str_array = explode(" ", $str);

echo $str_array[0] . "<br>";
echo $str_array[1] . "<br>";

print_r($str_array);

结果:

24.00C
48%
Array ( [0] => 24.00C [1] => 48% ) 

【讨论】:

  • 正如我在 cmets 中所说,字符串是通过使用 replace 函数的负载构建的,在此过程中,一些空格进入了字符串。 @第四只鸟$str_array = preg_split("/\s+/", $str)的解决方案完美解决了问题
猜你喜欢
  • 2018-02-01
  • 2019-10-30
  • 2015-04-11
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多