【问题标题】:splitting string issue: neither using preg_split nor expode() works拆分字符串问题:使用 preg_split 和 expode() 均无效
【发布时间】: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。不是吗???
  • 这对我来说很有效...无需转义尖括号
  • @Manwal 是的,我很清楚这个功能,我不认为错误是代码本身,而是与环境有关。如果我在其他任何地方运行完全相同的代码 sn-p 它可以工作。
  • 为什么不用explode()str_split() 来代替

标签: php regex


【解决方案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/" }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
相关资源
最近更新 更多