preg_split使用PREG_SPLIT_DELIM_CAPTURE

时间:2010-10-11 20:39:54

标签: php regex preg-split

我希望根据正则表达式拆分字符串,但我也有兴趣保留我们拆分的文本:

php > var_dump(preg_split("/(\^)/","category=Telecommunications &     CATV^ORcategory!=ORtest^caused_byISEMPTY^EQ"), null, PREG_SPLIT_DELIM_CAPTURE);
array(4) {
  [0]=> string(34) "category=Telecommunications & CATV"
  [1]=> string(18) "ORcategory!=ORtest"
  [2]=> string(16) "caused_byISEMPTY"
  [3]=> string(2) "EQ"
}
NULL
int(2)

我不明白为什么我没有得到如下数组:

array(4) {
  [0]=> "category=Telecommunications & CATV"
  [1]=> "^"
  [2]=> "ORcategory!=ORtest"
  [3]=> "^"
  [4]=> "caused_byISEMPTY"
  [5]=> "^"
  [6]=> "EQ"
}

此外,我如何更改我的正则表达式以匹配“^ OR”和“^”。我在查看后面的断言时遇到了麻烦,例如:

$regexp = "/(?<=\^)OR|\^/"; 

1 个答案:

答案 0 :(得分:2)

这将按预期工作:

var_dump(preg_split('/(\^)/','category=Telecommunications &     CATV^ORcategory!=ORtest^caused_byISEMPTY^EQ', -1, PREG_SPLIT_DELIM_CAPTURE));

preg_split()的结束括号位于错误的位置。

其他问题:

/(\^OR|\^)/