Приглашаем посетить
Путешествия (otpusk-info.ru)

Finding Tags with Regular Expressions

Previous
Table of Contents
Next

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>


Previous
Table of Contents
Next