ошибка preg_match: ошибка компиляции: отсутствует завершение] для класса символов - PullRequest
3 голосов
/ 25 марта 2011

У меня есть серия файлов .txt, которые я читаю в цикле for. И я поместил токен в некоторые текстовые файлы в форме [widget _]

Так, например, все содержимое текстового файла может быть [widget_search]. А другой текстовый файл может содержать содержимое [widget_recent-posts]. Другие могут просто иметь текст в формате html и вообще не иметь токена.

В цикле for я выполняю preg_match, чтобы посмотреть, соответствует ли текстовый файл содержимому моего шаблона токена. И если совпадение, я выполняю некоторый условный код.

Тем не менее, я получаю сообщение об ошибке при запуске теста трассировки, чтобы увидеть, есть ли совпадение.

Ошибка:

Предупреждение: preg_match () [function.preg-match]: ошибка компиляции: отсутствует завершение] для класса символов по смещению 8 в C: \ xampplite \ htdocs \ test \ wp-content \ plugins \ widget-test \ widget- test.php в строке 227

А вот код в строке 227:

if (preg_match("/[widget_/i",$widget_text)) {//do something}

Ответы [ 2 ]

13 голосов
/ 25 марта 2011

Вы должны экранировать символ [ следующим образом:

if (preg_match("/\[widget_/i",$widget_text)) { // do something }
0 голосов
/ 30 мая 2016

намного чище использовать preg_quote вот так:

if (preg_match(preg_quote("/[widget_/i"),$widget_text)) {//do something}
...