Chose Language:
Author: Admin/Publisher |finished | checked

PHP preg_match

La función de PHP preg_match compara un string dado $subject con una expresión regular dada $pattern

Description / Descripción
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

Esta función puede retornar false, y también puede devolver valores no booleanos que pueden ser evaluados como false como pueden ser 0 y «», por lo tanto, se recomienda el uso del operador ===

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

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category