How to Escape MySQL REGEXP Strings in PHP
It’s usually weird with MySQL in everything I guess. Again, I ran into using Regex in MySQL using REGEXP which is pretty cool.
MySQL escape strings with double backslash \\
, unlike other programming languages using single slash. But the problem here is that the string to be escaped is in a PHP variable, how do I escape it? preg_quote
uses single slash.
Figured this out; I had to escape all non word characters using preg_replace
which goes:
<?php function mysql_regex_escape( $str ) { return preg_replace( '/([\W])/', '\\\\\\\\$1', $str ); } echo mysql_regex_escape( "..foo, bar//" );
This escapes strings for MySQL. You can now run to test:
SELECT CAST( 'this is a ..foo, bar// test' AS BINARY ) REGEXP '$str_var'
🙂