【问题标题】:preg_split using PREG_SPLIT_DELIM_CAPTUREpreg_split 使用 PREG_SPLIT_DELIM_CAPTURE
【发布时间】:2010-10-11 20:39:53
【问题描述】:

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

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|\^/"; 

【问题讨论】:

    标签: php regex preg-split


    【解决方案1】:

    这将按预期工作:

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

    preg_split() 的右括号在错误的位置。

    附加问题:

    /(\^OR|\^)/
    

    【讨论】:

    • 明确一点,就是 ) 放错了地方。因此,PREG_SPLIT_DELIM_CAPTURE 没有作为函数调用的一部分提交。
    • 我很抱歉,我认为这是一个很好的迹象,是时候停止一天的编码了。很抱歉浪费时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多