Re: Re: regex help needed -- Solved! Thanks!
| From: | Fabrice Lezoray | Date: | Mon, 02 Aug 2004 07:10:17 +0000 |
| Subject: | Re: Re: regex help needed -- Solved! Thanks! | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-192460@lists.php.net to get a copy of this message | ||
Kathleen Ballard a écrit :
Thanks! Works like a charm!
I am the very lowest of newbies when it comes to regex
and working through your solutions has been very
educational. I have one question about something I
couldn't figure out:
#<h[1-9]>(.*)</h[1-9]>#Uie
<h([1-6])>.*?</h\1)>sie
What is the purpose of the back-ticks and the '#'?
PCRE patterns has to be enclosed, you can use all the non alpha numerics characters to do that. Personnaly, I prefer back ticks because I don't have to escape it often inside my patterns.
For my example, you can also remove the ``s pattern modifier, It makes the dot ( . ) accept any New line characters, and I had not see that you removed them before.
What are 'Uie' and 'sie'?there are patterns modifiers, you can find a complete list and descriptions here : http://www.php.net/manual/en/pcre.pattern.modifiers.php
Thanks again! Kathleen -----Original Message----- From: Fabrice Lezoray [mailto:fabrice@scriptsphp.org] Sent: Sunday, August 01, 2004 2:52 PM To: php-general@lists.php.net Subject: [PHP] Re: regex help needed hi M. Sokolewicz a écrit :Sorry for my bad english .. -- Fabrice Lezoray http://classes.scriptsphp.fr -----------------------------You could try something like: $return = preg_replace('#<h[1-9]>(.*)</h[1-9]>#Uie','str_replace("<br/>", "", "$1")'); - Tul Kathleen Ballard wrote:I think this mask is better :Sorry, Here is the code I am using to match the <h*> tags: <h([1-9]){1}>.*</h([1-9]){1}><h([1-6])>.*?</h\1)>siestringI have removed all the NL and CR chars from therunI am matching to make things easier. Also, I havebuttidy on the code so the tags are all uniform. The above string seems to match the tag well now,To remove the <br /> tags, you need to call preg_replace_callback() : <?php $str = '<h1>hi <br /> ..</h1> bla bla <h5> .... <br /> ..</h5> ...<br />'; function cbk_br($match) { return '<h' . $match[1] . '>' . str_replace('<br />', '', $match[2]) . '</h' . $match[1] . '>'; } $return = preg_replace_callback('I still need to remove the br tags from the tag contents (.*).<h([1-6])>(.*?)</h\1>si', 'cbk_br', $str); echo $return; ?>The strings I will be matching are html formatted text. Sample <h*> tags with content are below: <h4>Ex-Secretary Mickey Mouse <br />Loses Mass. Primary</h4> <h4>Ex-Secretary Mickey Mouse <br />Loses Mass. Primary <br /> Wins New Jersey</h4> <h4>Ex-Secretary Reich Loses Mass. Primary</h4> Again, any help is appreciated. Kathleen