PHP preg_match funtion
The PHP function preg_match compares a given string $subject
with a given regular expression $pattern
.
preg_match( string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0 ): int|false
Parameters
$pattern
– the pattern of the regular expression that will be compared with the given string.
$subject
– is the string with which we will compare the regular expression.
$matches
– an array that we will provide if we want to obtain matches of patterns in $pattern
compared to the string.
$matches[0]
will contain the text that matched the complete pattern given in $pattern
.
$matches[1]
will have the text that matched the first captured parenthesized subpattern, and so on.
$flags
– we can pass the following flags as parameters:
First, let’s consider the case of having no flags: The flag value is 0
by default.
preg_match('/(foo)(bar)(baz)/', 'foobarbaz', $matches); print_r($matches);
Array ( [0] => foobarbaz [1] => foo [2] => bar [3] => baz )
PREG_OFFSET_CAPTURE
If this constant is used as a flag parameter, the index where the match was found will also be returned in $matches
.
preg_match('/(foo)(bar)(baz)/', 'foobarbaz', $matches, PREG_OFFSET_CAPTURE); print_r($matches);
Array ( [0] => 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
When we pass this constant as a flag, non-matching sub-patterns will be reported as null
in $matches
; if not used, they will be reported as an empty string. ""
<?php preg_match('/(a)(b)*(c)/', 'ac', $matches); var_dump($matches); preg_match('/(a)(b)*(c)/', 'ac', $matches, PREG_UNMATCHED_AS_NULL); var_dump($matches); ?>
array(4) { [0]=> 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
– This parameter is optional and can be used to specify the starting point for the search for matches (in bytes).
Returns
1
– If a pattern matching the given pattern in $pattern
is found in the string.
0
– If no matches are found with the pattern $pattern
.
false
in case of a failure.
This time we won’t see examples of the function, as there are already enough examples in its documentation. However, we will look at its use cases.
This function can be used in form validation, data extraction, and keyword searches. Its primary use, though, is in form validation and password validation.
We will delve deeper when writing about Form Validation in PHP.