Función PHP preg_match()

Expresiones regulares de PHP (PCRE)

La función preg_match se utiliza para realizar una coincidencia de expresión regular.

Sintaxis

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Busca en subject una coincidencia con la expresión regular dada en pattern.

Descripción de parámetros:

  • $pattern: El patrón a buscar, en forma de cadena.

  • $subject: La cadena de entrada.

  • $matches: Si se proporciona el parámetro matches, se rellenará con los resultados de la búsqueda. $matches

  • $flags: flags puede establecerse a los siguientes valores de marcador:

    1. PREG_OFFSET_CAPTURE: Si se pasa este marcador, se añadirá el desplazamiento de cadena (relativo a la cadena de destino) para cada coincidencia que se encuentre. Nota: Esto cambia el array que se rellena en el parámetro matches, haciendo que cada elemento sea un array donde el elemento 0 es la cadena coincidente y el elemento 1 es el desplazamiento de esa cadena coincidente dentro de la cadena de destino subject.

  • offset: Normalmente, la búsqueda comienza desde el inicio de la cadena de destino. El parámetro opcional offset se utiliza para especificar el inicio de la búsqueda desde alguna posición de la cadena de destino (en bytes).

Valor de retorno

Devuelve el número de coincidencias de pattern. Su valor será 0 (sin coincidencia) o 1, porque preg_match() detiene la búsqueda después de la primera coincidencia. preg_match_all(), a diferencia de esta, continúa buscando en subject hasta llegar al final. Si ocurre un error, preg_match() devuelve FALSE.

Ejemplo

Buscar la cadena de texto "php":

<?php //La "i" después del delimitador del patrón marca que esta es una búsqueda que no distingue entre mayúsculas y minúsculas. if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "Se encontró la cadena coincidente php."; } else { echo "No se encontró la cadena coincidente php."; } ?>

El resultado de la ejecución es el siguiente:

查找到匹配的字符串 php.


Buscar la palabra "web"

<?php /*El \b en el patrón marca un límite de palabra, por lo que solo se coincide con la palabra independiente "web", y no con partes de una palabra como "webbing" o "cobweb".*/ if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) { echo "Se encontró la cadena coincidente.\n"; } else { echo "No se encontró la cadena coincidente.\n"; } if (preg_match("/\bweb\b/i", "PHP is the website scripting language of choice.")) { echo "Se encontró la cadena coincidente.\n"; } else { echo "No se encontró la cadena coincidente.\n"; } ?>

El resultado de la ejecución es el siguiente:

Se encontró la cadena coincidente. No se encontró ninguna cadena coincidente.


Obtener el dominio de una URL

<?php //Obtener el nombre de host de la URL preg_match('@^(?:http://)?([^/]+)@i', "http://www.example.com/index.html", $matches); $host = $matches[1]; //Obtener las dos últimas partes del nombre de host preg_match('/[^.]+\.[^.]+$/', $host, $matches); echo "domain name is: {$matches[0]}\n"; ?>

El resultado de la ejecución es el siguiente:

domain name is: example.com


Usar subgrupos con nombre

<?php $str = 'foobar: 2008'; preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches); /*El siguiente ejemplo funciona con PHP 5.2.2 (PCRE 7.0) o versiones posteriores; sin embargo, para compatibilidad con versiones anteriores, se recomienda la forma anterior.*/ // preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches); print_r($matches); ?>

El resultado de la ejecución es el siguiente:

Array
(
    [0] => foobar: 2008
    [name] => foobar
    [1] => foobar
    [digit] => 2008
    [2] => 2008
)

Expresiones regulares de PHP (PCRE)

Otras extensiones