@Barrakuda74

Как экранировать строку в REGEXP (mysql) средствами PHP?

Напр. есть условие:
...
WHERE column1 REGEXP :query

где $query = '\^[^~]*' . наш_запрос . '[^~]*~'

Проблема в том, что если в запросе будет звёздочка, то выражением станет \^[^~]**[^~]*~, и мы получим ошибку
1139 Got error 'nothing to repeat at offset 7' from regexp

Если будут вопросы, то выражением станет \^[^~]*?????[^~]*~, и мы получим ошибку
1139 Got error 'nothing to repeat at offset 8' from regexp

И вариантов со спецсимволами в регулярке может быть масса. Какой функцией (В PHP или в самом SQL-запросе, не важно) их изолировать, чтобы MYSQL воспринимал эту часть регулярного выражения исключительно как СТРОКУ?
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Я думаю, что preg_quote() должна подойти.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы