PHP preg_match
La función de PHP preg_match compara un string dado $subject
con una expresión regular dada $pattern
preg_match( string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0 ): int|false
Parámetros
$pattern
– el patrón de la expresión regular con el que se comparara la el string dado
$subject
– es el string con el que compararemos la expresión regular.
$matches
– un array que proveeremos si queremos obtener los encuentros(matches) de patrones en $pattern en comparación con el string
$matches[0]
Contendrá el texto que cumplió con el patrón completo dado en $pattern
$matches[1]
will have the text that matched the first captured parenthesized subpattern, and so on.
$flags
– podemos pasar por parámetro las siguientes flags:
Primero veamos el caso de no tener flags: El valor de flag es 0
por defecto
preg_match('/(foo)(bar)(baz)/', 'foobarbaz', $matches); print_r($matches);
Array ( [0] => foobarbaz [1] => foo [2] => bar [3] => baz )
PREG_OFFSET_CAPTURE
En caso de usar esta constante como parámetro de la flag, también se nos devolverá en matches el índice de donde encontró la comparación
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
Cuando pasamos esta constante como flag los sub patrones no coincidentes serán reportados como null
en $matches
, en caso de no usarla serán reportados como un string vacio ""
<?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
– Este parámetro es opcional y puede ser usado para especificar desde que lugar empezar la búsqueda de coincidencias (en bytes)
Retornos
1
– si se encontró en el string un patrón que coincida con el patrón dado en $pattern
0
– si no se encontró coincidencias con el patrón $pattern
false
en caso de que se produzca un fallo
En esta ocasión no veremos ejemplos de la función, ya que en su documentación hay suficientes ejemplos ya, pero sí veremos sus casos de uso.
Esta función la podemos utilizar en casos de validación de formularios, extracción de datos y búsquedas de palabras clave, aunque su mayor uso es en validación de formularios y validación de contraseña.
Profundizaremos más cuando escriba de Validación de formularios en PHP