Re: preg_replace does not replace all occurrences

From: Date: Mon, 14 Mar 2011 20:36:34 +0000
Subject: Re: preg_replace does not replace all occurrences
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-51688@lists.php.net to get a copy of this message
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 <martinscotta@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

« previous php.internals (#51688) next »