拆分字符串问题:使用 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() 均无效的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式(preg_split):如何根据分隔符进行拆分,不包括一对引号中包含的分隔符?
php preg_split 查找字符串中的所有单词不起作用