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