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

Reply via email to