Из руководства :
Специальные символы регулярного выражения:. \ + *? [^] $ () {} =! <> | : -
Вы можете написать функцию, которая заменяет \
, сопровождаемый каждым из вышеперечисленных символов, на сам символ. Должно быть легко:
function inverse_preg_quote($str)
{
return strtr($str, array(
'\\.' => '.',
'\\\\' => '\\',
'\\+' => '+',
'\\*' => '*',
'\\?' => '?',
'\\[' => '[',
'\\^' => '^',
'\\]' => ']',
'\\$' => '$',
'\\(' => '(',
'\\)' => ')',
'\\{' => '{',
'\\}' => '}',
'\\=' => '=',
'\\!' => '!',
'\\<' => '<',
'\\>' => '>',
'\\|' => '|',
'\\:' => ':',
'\\-' => '-'
));
}
$string1 = '<title>Hello (World)?</title>';
$string2 = inverse_preg_quote(preg_quote($string1));
echo $string1 === $string2;