Re: Regular expression help

From: 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

« previous php.general (#196223) next »