Задать вопрос
@X0Y0

Как экранировать символы регулярного выражения в многобайтовых строках?

У меня есть регулярное выражение которое содержит внешние данные, если из внешних данных поступит строка содержащая служебные символы регулярного выражения, то это покоцает весь паттерн, пытался найти встроенную функцию для экранирования символов в многобайтовых строках- не нашел. Как экранировать символы регулярного выражения?
Пример:
function f(string $data)
{
    //Здесь сначала нужно экранировать символы в строке, но как это сделать?
    $data = screening($data);
    //Затем передать в паттерн регулярного выражения
    $pattern = "^{$data}+|{$data}+$";
}
  • Вопрос задан
  • 263 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@NightFall
Последовательности \Q и \E экранируют служебные символы между ними. \Q - начало, \E окончание экранирования: \d\Q(some)\E\d - тут скобки - это просто скобки
Видимо, $data = "\Q$data\E" должно сработать (или "\\Q$data\\E")

PS. только заметил, что вопрос задан 10 дней назад... Наверно, вы уже нашли ответ...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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