0

正規表現に基づいて文字列を分割しようとしていましたが、分割したテキストを保持することにも関心があります。

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

1 に答える 1

2

これは期待どおりに機能します。

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

preg_split() の閉じ括弧が間違った場所にあります。

追加の質問:

/(\^OR|\^)/
于 2010-10-11T20:59:39.383 に答える