来自manual:
特殊的正则表达式字符是: . \ + * ? [ ^ ] $ ( ) { } = ! | :-
您可以编写一个函数,将\ 后面的每个上述字符替换为字符本身。应该很容易:
function inverse_preg_quote($str)
{
return strtr($str, array(
'\\.' => '.',
'\\\\' => '\\',
'\\+' => '+',
'\\*' => '*',
'\\?' => '?',
'\\[' => '[',
'\\^' => '^',
'\\]' => ']',
'\\$' => '$',
'\\(' => '(',
'\\)' => ')',
'\\{' => '{',
'\\}' => '}',
'\\=' => '=',
'\\!' => '!',
'\\<' => '<',
'\\>' => '>',
'\\|' => '|',
'\\:' => ':',
'\\-' => '-'
));
}
$string1 = '<title>Hello (World)?</title>';
$string2 = inverse_preg_quote(preg_quote($string1));
echo $string1 === $string2;