preg_matchPerform a regular expression match
&reftitle.description;
intpreg_matchstringpatternstringsubjectarraymatchesintflags0intoffset0
Searches subject for a match to the regular
expression given in pattern.
&reftitle.parameters;
pattern
The pattern to search for, as a string.
subject
The input string.
matches
If matches is provided, then it is filled with
the results of search. $matches[0] will contain the
text that matched the full pattern, $matches[1]
will have the text that matched the first captured parenthesized
subpattern, and so on.
flagsflags can be a combination of the following flags:
PREG_OFFSET_CAPTURE
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 where every element is an
array consisting of the matched string at offset 0
and its string offset into subject at offset
1.
]]>
&example.outputs;
Array
(
[0] => foobarbaz
[1] => 0
)
[1] => Array
(
[0] => foo
[1] => 0
)
[2] => Array
(
[0] => bar
[1] => 3
)
[3] => Array
(
[0] => baz
[1] => 6
)
)
]]>
PREG_UNMATCHED_AS_NULL
If this flag is passed, unmatched subpatterns are reported as &null;;
otherwise they are reported as an empty string.
]]>
&example.outputs;
string(2) "ac"
[1]=>
string(1) "a"
[2]=>
string(0) ""
[3]=>
string(1) "c"
}
array(4) {
[0]=>
string(2) "ac"
[1]=>
string(1) "a"
[2]=>
NULL
[3]=>
string(1) "c"
}
]]>
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).
Using offset is not equivalent to passing
substr($subject, $offset) to
preg_match in place of the subject string,
because pattern can contain assertions such as
^, $ or
(?<=x). Compare:
]]>
&example.outputs;
while this example
]]>
will produce
Array
(
[0] => def
[1] => 0
)
)
]]>
Alternatively, to avoid using substr, use the
\G assertion rather than the ^ anchor, or
the A modifier instead, both of which work with
the offset parameter.
&reftitle.returnvalues;
preg_match returns 1 if the pattern
matches given subject, 0 if it does not, or &false;
if an error occurred.
&return.falseproblem;
&reftitle.changelog;
&Version;&Description;7.2.0
The PREG_UNMATCHED_AS_NULL is now supported for the
$flags parameter.
&reftitle.examples;
Find the string of text "php"
]]>
Find the word "web"
]]>
Getting the domain name out of a URL
]]>
&example.outputs;
Using named subpattern
\w+): (?P\d+)/', $str, $matches);
/* This also works in PHP 5.2.2 (PCRE 7.0) and later, however
* the above form is recommended for backwards compatibility */
// preg_match('/(?\w+): (?\d+)/', $str, $matches);
print_r($matches);
?>
]]>
&example.outputs;
foobar: 2008
[name] => foobar
[1] => foobar
[digit] => 2008
[2] => 2008
)
]]>
&reftitle.notes;
Do not use preg_match if you only want to check if
one string is contained in another string. Use
strpos instead as it will be faster.
&reftitle.seealso;
PCRE Patternspreg_quotepreg_match_allpreg_replacepreg_splitpreg_last_errorpreg_last_error_msg