Finding Tags with Regular Expressions


 preg_match_all('/<.*?>/', $string, $matches) 


One of the advantages of PCRE or POSIX is that some special constructs are supported. For instance, usually regular expressions are matched greedily. Take, for instance, this regular expression:

 <.*> 

When trying to match this in the following string:

 <p>Sex, drugs and <b>PHP</b>.</p> 

what do you get? You get the complete string. Of course, the pattern also matches on <p>, but regular expressions try to match as much as possible. Therefore, you usually have to do a clumsy workaround, such as <[^>]*>. However, it can be done more easily. You can use the ? modifier after the * quantifier to activate nongreedy matching.

Finding All Tags Using Non-greedy PCRE (non-greedy.php)
 <?php   $string = '<p>Sex, drugs and <b>PHP</b>.</p>';   preg_match_all('/<.*?>/', $string, $matches);   foreach ($matches[0] as $match) {     echo htmlspecialchars("$match ");   } ?> 

Which outputs:

 <p> <b> </b> </p> 




PHP Phrasebook
PHP Phrasebook
ISBN: 0672328178
EAN: 2147483647
Year: 2005
Pages: 193

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net