I chose the simplest example to show the preg_replace behavior, there are better (and safer) ways to scape slash characters. Anyways, *is this the expected preg_replace behavior?*
Martin <?php function test($str) { static $re = '/(^|[^\\\\])\'/'; static $change = '$1\\\''; echo $str, PHP_EOL, preg_replace($re, $change, $str), PHP_EOL, PHP_EOL; } test("str '' str"); // bug? test("str \\'\\' str"); // ok test("'str'"); // ok test("\'str\'"); // ok ---- Expected: str '' str str \'\' str str \'\' str str \'\' str 'str' \'str\' \'str\' \'str\' ---- Result: str '' str str \'' str str \'\' str str \'\' str 'str' \'str\' \'str\' \'str\' Martin Scotta