preg_split с использованием PREG_SPLIT_DELIM_CAPTURE - PullRequest
0 голосов
/ 12 октября 2010

Я хотел разделить строку на основе регулярного выражения, но я также заинтересован в том, чтобы сохранить текст, на который мы разбили:

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"
}

Кроме того, как я могу изменить свое регулярное выражение, чтобы соответствовать "^ ИЛИ", а также "^".У меня были проблемы с таким утверждением, как:

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

1 Ответ

2 голосов
/ 12 октября 2010

Это будет работать как ожидалось:

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

закрывающая скобка preg_split () находится не в том месте.

дополнительный вопрос:

/(\^OR|\^)/
...