Я получаю это предупреждение от php после изменения от разделения до preg_split для совместимости php 5.3:
PHP Warning: preg_split(): Delimiter must not be alphanumeric or backslash
код php:
$statements = preg_split("\\s*;\\s*", $content);
Как я могу зафиксировать regex для не использования еще \
Спасибо!
Ошибка связана с тем, что вам нужен символ-разделитель вокруг регулярного выражения.
$statements = preg_split("/\s*;\s*/", $content);
Хотя вопрос был помечен как ответ через две минуты после того, как его задали, я хотел бы добавить некоторую информацию для записей.
Подобно тому, как строки разделяются кавычками, регулярные выражения во многих языках, таких как Perl или JavaScript, разделяются косой чертой. Это приведет к выражению следующего вида:
/\s*;\s*/
Этот синтаксис также позволяет указывать модификаторы:
/\s*;\s*/Ui
Perl-совместимые регулярные выражения PHP (также известные как preg _... functions) наследуют это. Однако сам PHP не поддерживает этот синтаксис, поэтому загрузка preg_split () с / \ s *; \ s * /
вызовет ошибку синтаксического анализа. Вместо этого вы заключаете его в кавычки, чтобы построить обычную строку.
Еще одна вещь, которую вы должны принять во внимание, - это то, что PHP позволяет изменять разделитель. Например, вы можете использовать это:
@\s*;\s*@Ui
Для чего это нужно? Это упрощает использование косой черты внутри выражения, поскольку вам не нужно их экранировать. Сравните:
/^\/home\/.*$/i
@^/home/.*$@i