Ошибка PHP, когда ввод содержит "/" - PullRequest
3 голосов
/ 05 марта 2012

Когда входная строка содержит символ "/", я получаю сообщение об ошибке PHP:

Предупреждение: preg_match () [function.preg-match]: неизвестный модификатор

Какя могу решить это?

$token = '/<'.$tag.'[^>]*>(.*\b'.$keyword.'\b.*)<\/'.$tag.'>/siU';
if(preg_match($token, &$content, $matches))
{
    $match = 1;
}
return $match;

Ответы [ 3 ]

5 голосов
/ 05 марта 2012

Вы должны использовать preg_quote() для экранирования тега и ключевого слова, например:

$token = '/<' . preg_quote($tag, '/') . '[^>]*>(.*\b' . preg_quote($keyword, '/')
         . '\b.*)<\/' . preg_quote($tag, '/') . '>/siU';
2 голосов
/ 05 марта 2012

preg_quote Функция должна помочь вам в этом.

1 голос
/ 05 марта 2012

Вы используете ввод в шаблоне регулярных выражений - вы должны избегать всех специальных последовательностей.Попробуйте addcslashes функция

...