Orders results so that $matches[0] is an array of full
pattern matches, $matches[1] is an array of strings matched by
the first parenthesized subpattern, and so on.
If this flag is passed, for every occurring match the appendant string
offset (in bytes) will also be returned. Note that this changes the value of
matches into an array of arrays where every element is an
array consisting of the matched string at offset 0
and its string offset into subject at offset
1.
If this flag is passed, unmatched subpatterns are reported as null;
otherwise they are reported as an empty string.
offset
Normally, the search starts from the beginning of the subject string.
The optional parameter offset can be used to
specify the alternate place from which to start the search (in bytes).
Note:
Using offset is not equivalent to passing
substr($subject, $offset) to
preg_match_all() in place of the subject string,
because pattern can contain assertions such as
^, $ or
(?<=x). See preg_match()
for examples.
Return Values
Returns the number of full pattern matches (which might be zero), or false on failure.
Errors/Exceptions
If the regex pattern passed does not compile to a valid regex, an E_WARNING is emitted.
<?php
// The \\2 is an example of backreferencing. This tells pcre that
// it must match the second set of parentheses in the regular expression
// itself, which would be the ([\w]+) in this case. The extra backslash is
// required because the string is in double quotes.
$html = "<b>bold text</b><a href=howdy.html>click me</a>";
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4] . "\n\n";
}
?>
The above example will output:
matched: <b>bold text</b>
part 1: <b>
part 2: b
part 3: bold text
part 4: </b>
matched: <a href=howdy.html>click me</a>
part 1: <a href=howdy.html>
part 2: a
part 3: click me
part 4: </a>