拆分字符串问题:使用 preg_split 和 expode() 均无效

Posted

技术标签:

【中文标题】拆分字符串问题:使用 preg_split 和 expode() 均无效【英文标题】:splitting string issue: neither using preg_split nor expode() works 【发布时间】:2015-10-27 06:00:03 【问题描述】:

我有这个字符串正在通过

linktest>http://1.com/

作为$值。

$fixed = preg_split("/>/", $value);

运行,当我在 $fixed 上运行 print_r 函数时,它会像这样返回

Array ( [0] => linktest>http://1.com/ )

我想要做的是用尖括号 (>) 分隔字符串,我的预期产量将是

Array ( [0] => linktest, [1] => http://1.com/ )

在我的脚本的前面,我运行了一个类似的函数

preg_split("/[\s]+/"), $string);

它由字符空间分隔并返回空格之间的所有内容。我不明白为什么上述内容没有被分开,但我已经测试了我的正则表达式,它适用于选择尖括号。

【问题讨论】:

这给出了预期的输出eval.in/457524。不是吗??? Its working fine for me 这对我来说很有效...无需转义尖括号 @Manwal 是的,我很清楚这个功能,我不认为错误是代码本身,而是与环境有关。如果我在其他任何地方运行完全相同的代码 sn-p 它可以工作。 为什么不用explode()str_split() 来代替 【参考方案1】:

我已经测试了以下 sn-p 并且它可以工作,您的代码中可能还有其他问题:

$value = "something>again>thisisgood";

print_r(preg_split("/\>/", $value));

输出:

Array ( [0] => something [1] => again [2] => thisisgood ) 

旁注:

你为什么不使用explode() 函数?它返回由通过参数指定的分隔符拆分的字符串数组,在您的情况下是:

explode(">", $value);

它返回一个由“>”分隔的字符串数组。

更新:

正如通过 cmets 讨论的那样,“>”被编码为 html 实体,因此它也应该在您的分隔符中被视为 HTML 实体。

explode(">", $value);

【讨论】:

> 不是 Metacharacter 你不必用 `` 来逃避它。 我尝试转义尖括号,但没有成功。在我尝试使用 preg_split 之前,我使用了 explode 。使用爆炸,正如你所做的那样,它不起作用。这里我尝试使用print_r(preg_split("/\>/", $value));,结果还是Array ( [0] => linktest>http://1.com/ ) 您确定$value 的值吗?请var_dump()它,然后把结果放在这里。 请试试这个并报告结果:explode(">", $value); 只是为了确保> 没有被编码为 HTML 实体。 我得到了这个输出array(1) [0]=> string(25) "linktest>http://1.com/"

以上是关于拆分字符串问题:使用 preg_split 和 expode() 均无效的主要内容,如果未能解决你的问题,请参考以下文章

PHP 拆分为 preg_split()

正则表达式(preg_split):如何根据分隔符进行拆分,不包括一对引号中包含的分隔符?

php preg_split 查找字符串中的所有单词不起作用

拆分字符串中的第一个空格和最后一个空格并将输出的大小限制为3

拆分几行长文本

城市字符串----转数组( 加空格---preg_split) 正则分割成数组