What is more likely to be wrong? Your understanding of a specific regex pattern (which happens to be full of escapes making it incredibly hard to read) or the implementation of preg_replace?
~Hannes On 14 March 2011 16:18, Martin Scotta <martinsco...@gmail.com> wrote: > > 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 -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php