Re: Re[2]: preg_replace: avoiding double replacements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18 May 2010 09:04, Andre Polykanine <andre@xxxxxxxx> wrote:

[snip]

> Andre Polykanine wrote:
>> Hello everyone,
>>
>> Sorry for bothering you again.
>> Today I met a problem exactly described by a developer in users' notes
>> that follow the preg_replace description in the manual:
>> info at gratisrijden dot nl
>> 02-Oct-2009 02:48
>> if you are using the preg_replace with arrays, the replacements will apply as subject for the patterns later in the array. This means replaced values can
>> be replaced again.
>>
>> Example:
>> <?php
>> $text =
>> 'We want to replace BOLD with the <boldtag> and OLDTAG with the <newtag>';
>>
>> $patterns
>> = array(
>> '/BOLD/i',
>> '/OLDTAG/i');
>> $replacements
>> = array(
>> '<boldtag>',
>> '<newtag>');
>>
>> echo preg_replace
>> ($patterns, $replacements, $text);
>> ?>
>>
>> Output:
>> We want to replace <b<newtag>> with the <<b<newtag>>tag> and <newtag> with the <newtag>
>>
>> Look what happend with BOLD.
>>
>> Is there any solution to this besides any two-step sophisticated trick
>> like case changing?
>> Thanks!
>>

Use better regexes: either match for word endings or use a delimiter
in your markers (i.e. ###BOLD### instead of BOLD).

Regards
Peter

-- 
<hype>
WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
Flickr: http://www.flickr.com/photos/fake51
BeWelcome: Fake51
Couchsurfing: Fake51
</hype>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux