Как экранировать pattern с переменной, чтобы работал preg_replace?

Друзья, приветствую.
Подскажите, пожалуйста, как правильно обработать переменную для успешного preg_replace?
Переменная $query формируется исходя из запроса пользователя. То, что пользователь запрашивал - необходимо выделить .
Если код такой, то переменная $contt возвращает NULL
$query = "/(\\[jkj|холо)/i";
<?=var_dump(preg_replace("/".$query."/i", "<b>$0</b>", $contt)));

Если код такой:
$query = "/(\\[jkj|холо)/i";
<?=var_dump(preg_replace("/(\\[jkj|холо)/i", "<b>$0</b>", $contt)));

То все прекрасно работает, хотя pattern получается один и тот же, просто в первом случае он в виде переменной...
Подскажите, как решить данную проблему?
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
данные от пользователя обрабатываете preg_quote
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Winsik
@Winsik
сис.админ, недопрограммист :)
Ваш код:
$query = "/(\\[jkj|холо)/i";
<?=var_dump(preg_replace("/".$query."/i", "<b>$0</b>", $contt)));

подставляем первую строчку во вторую:
<?=var_dump(preg_replace("/"."/(\\[jkj|холо)/i"."/i", "<b>$0</b>", $contt)));

Ничего не замечаете ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы