Re: Regular expression help
| From: | Skippy | Date: | Thu, 09 Sep 2004 14:44:59 +0000 |
| Subject: | Re: Regular expression help | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-196223@lists.php.net to get a copy of this message | ||
Quoting John Holmes <holmes072000@charter.net>:
> From: "Skippy" <skippy@zuavra.net>
> > I'm trying to replace all occurances of the X character in a text
> > with Y, but only those X's that occur between bold tags (<b></b>).
>
> <?php
>
> $str = 'This X and this X will not be fixed, but <b>this X
> and</b> and hopefully this <b>X</b> should be, along <b> with
> this X also. </b>, but not this X.';
>
> function myreplace($match)
> {
> $from = 'X';
> $to = 'Y';
> return str_replace($from,$to,$match[0]);
> }
>
> $new_str =
> preg_replace_callback('#<b>.*</b>#Uis','myreplace',$str);
>
> echo $new_str;
>
> ?>
It works great, thank you. I had tried something on my own previously,
but without the ungreedy modifier and with replacements inside a
repeated while{} cycle instead of a callback. The main drawback in my
version was that an X near "hopefully" would have been replaced as
well (since technically it is between <b> and </b>). But that wasn't
what I wanted, of course.
--
Romanian Web Developers - http://ROWD.ORG