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

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

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

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

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

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