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