Функция PHP, чтобы избежать синтаксиса regexp MySQL

Я ищу что-то похожее на preg_quote, но для синтаксиса regexp MySQL.

Есть идеи?

Solutions Collecting From Web of "Функция PHP, чтобы избежать синтаксиса regexp MySQL"

MySQL regexps – это расширенный вариант POSIX (ERE), доступный в PHP как устаревшие функции ereg_ .

К сожалению, в PHP нет ereg_quote , однако специальные символы PCRE являются надмножеством специальных символов ERE, а обратная косая черта с неспецифическим символом пунктуации не наносит ему вреда, поэтому вы можете избежать использования preg_quote безопасно.

(Естественно, вам понадобятся параметризованные запросы или mysql_real_escape_string после этого цитирования, чтобы остановить обратную косую черту, неверно истолковавшуюся, поскольку mysql_real_escape_string -литерал из строки, отличной от ANSI.

К сожалению, preg_quote() PHP preg_quote() MySQL REGEXP, preg_quote() знак двоеточия (:), который REGEXP MySQL не понимает

Для этого нет встроенной функции MySQL. Возможно, вам просто нужно использовать preg_quote перед передачей регулярного выражения в запрос MySQL.

Попробуйте следующее: (PHP)

  $tags="test'*\\\r blue"; $tags=mysql_real_escape_string($tags); $tags=preg_replace('/([.*?+\[\]{}^$|(\)])/','\\\\\1',$tags); $tags=preg_replace('/(\\\[.*?+\[\]{}^$|(\)\\\])/','\\\\\1',$tags); 

Спасибо , хороший ответ bobince . Но это проблема, если вам нужно использовать mysql_real_escape_string после цитирования, о котором я упомянул в комментарии.

На самом деле preg_quote и mysql_real_escape_string имеют перекрытие, и это делает эту проблему! mysql_real_escape_string этом случае mysql_real_escape_string не должен выходить \ . Поэтому я предлагаю:

 function regexpEscape(/*string*/ $input) // Can uncomment `string` for PHP 7.0+ { return addcslashes(preg_quote($input), "\0'\"\n\r\x1A"); // charlist = All characters that escape by real_escape_string except backslash } 

(Для charlist см .: http://php.net/manual/en/mysqli.real-escape-string.php )

Я знаю, что это не идеальный путь. Но не смог найти лучшего способа.