PHP регулярное выражение - PullRequest
1 голос
/ 09 июля 2010

Рассмотрим фрагмент:

var_dump(preg_split("/./", "A.B.C")); // split on anything as the dot has not been escaped

, который производит вывод:

array(6) {
  [0]=>
  string(0) ""
  [1]=>
  string(0) ""
  [2]=>
  string(0) ""
  [3]=>
  string(0) ""
  [4]=>
  string(0) ""
  [5]=>
  string(0) ""
}

Может кто-нибудь объяснить, как это работает? Также я не вижу A, B или C в выводе !! Почему?

Ответы [ 5 ]

4 голосов
/ 09 июля 2010

Обратите внимание, что preg_split не возвращает разделитель.Так что, конечно, вы ничего не получаете, так как разделяете на любой разделитель.Вместо этого вы видите 6 пустых строк между символами.

2 голосов
/ 09 июля 2010

preg_split будет разбивать входную строку во всех случаях, которые соответствуют заданному регулярному выражению, и удаляет совпадение. В вашем случае . соответствует любому символу (кроме разрывов строк). Таким образом, ваша входная строка A.B.C будет разделена на каждый символ, что даст вам шесть частей, где каждая часть является пустой строкой.

Если вы хотите, чтобы совпадения были частью результата, вы можете использовать проверочные утверждения или установить PREG_SPLIT_DELIM_CAPTURE (в зависимости от того, какой результат вы хотите получить).

2 голосов
/ 09 июля 2010

Точка - это специальный символ в регулярном выражении.вместо этого используйте "/\./".

Вы не видите A, B и C в своих результатах, поскольку разделяете их.Все, что вы получаете, это пустое пространство между буквами.

1 голос
/ 09 июля 2010

Точка (.) - это специальный символ в регулярном выражении, вам нужно избежать того, что вы ищете:

var_dump(preg_split("/\./", "A.B.C"));

Результат:

array(3) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "C"
}

Обновление:

Ваше регулярное выражение разделяется на любой символ, поэтому оно разделяется на все пять символов A.B.C, включая эту точку, поэтому вы получаете пустые значения.

0 голосов
/ 09 июля 2010

То, что вы ищете, это

var_dump(preg_split("/\./", "A.B.C"));

"" это специальный символ для регулярного выражения, что означает «сопоставить что угодно». Следовательно, его необходимо избежать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...