Programming Forums

Programming Forums (http://www.programmingforums.org/forumindex.php)
-   PHP (http://www.programmingforums.org/forum29.html)
-   -   regex (preg_replace) parsing (http://www.programmingforums.org/showthread.php?t=7779)

para Dec 31st, 2005 5:10 PM

regex (preg_replace) parsing
 
I'm trying to replace certain occurances of a substring within certain substrings of a string.
For example, if I have the string:
:

"blah1<br>blah2 blah3 <pre>asdf<br>123<br></pre> blah4 blah5<br>blah6"
I would like to be able to use a preg_replace() call to change this to:
:

"blah1<br>blah2 blah3 <pre>asdf123</pre> blah4 blah5<br>blah6"
Where, in this example, <br>'s are removed, but only within <pre> blocks. Is this possible?

I'm not so great a PHP, and worse at regex; I came up with something like..
:

$str = preg_replace("/<pre>(.*)<br><\/pre>/", "<pre>$1</pre>", $str);
But it doesn't exactly work correctly. I'm sure this is far from what I want to :(

Might anyone be regex gurus?

Arevos Dec 31st, 2005 5:24 PM

Maybe you should take advantage of preg_replace_callback:
[PHP]function remove_br_tags($matches) {
return preg_replace("/<br>/", "", $matches[0]);
}

$str = "blah1<br>blah2 blah3 <pre>asdf<br>123<br></pre> blah4 blah5<br>blah6";

$str = preg_replace_callback("/<pre>.*?<\/pre>/", "remove_br_tags", $str);[/PHP]

para Dec 31st, 2005 6:30 PM

Thanks, worked great. :)


All times are GMT -5. The time now is 6:04 PM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC