Re: preg_replace does not replace all occurrences
| From: | Richard Quadling | Date: | Tue, 15 Mar 2011 10:32:53 +0000 |
| Subject: | Re: preg_replace does not replace all occurrences | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-51693@lists.php.net to get a copy of this message | ||
On 14 March 2011 20:36, Hannes Landeholm <landeholm@gmail.com> wrote:
> 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
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
Did no one see why the regex was wrong?
RegexBuddy (a windows app) explains regexes VERY VERY well.
--
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY