PHP Expresiones Regulares (PCRE)

Una expresión regular describe un patrón de coincidencia de cadenas, que se puede utilizar para comprobar si una cadena contiene una subcadena determinada, reemplazar la subcadena coincidente o extraer de una cadena las subcadenas que cumplen una condición, etc.

Para más contenido sobre expresiones regulares, consulte nuestro:Expresiones regulares - Tutorial。

En PHP, el uso de expresiones regulares se realiza principalmente a través de un conjunto de funciones integradas, las más comunes son:

  • preg_match(): busca el patrón que coincide en la cadena y devuelve solo la primera coincidencia.
  • preg_match_all(): busca el patrón que coincide en la cadena y devuelve todas las coincidencias.
  • preg_replace(): busca el patrón que coincide en la cadena y luego realiza un reemplazo.

Función preg_match()

La función preg_match() se utiliza para buscar un patrón que coincida en una cadena y devuelve solo la primera coincidencia.

preg_match(pattern, subject, matches)

Descripción de parámetros:

  • pattern: patrón de expresión regular.
  • subject: la cadena a buscar.
  • matches: parámetro opcional, se utiliza para almacenar el resultado de la coincidencia.

Ejemplo

<?php
$str = "Hello, World!";
$pattern = "/Hello/";
if (preg_match($pattern, $str, $matches)) {
    echo "¡Coincidencia exitosa!" . PHP_EOL;
    print_r($matches);
} else {
    echo "¡No se encontró ninguna coincidencia!";
}
?>

El resultado del código anterior es:

匹配成功!
Array
(
    [0] => Hello
)

Función preg_match_all()

La función preg_match_all() se utiliza para buscar un patrón que coincida en una cadena y devuelve todas las coincidencias.

preg_match_all(pattern, subject, matches)

Descripción de parámetros:

  • Busca el patrón que coincide en la cadena y devuelve todas las coincidencias.
  • pattern: patrón de expresión regular.
  • subject: la cadena a buscar.
  • matches: matriz para almacenar todos los resultados de coincidencia.

Ejemplo

<?php
$str = "The cat and the hat";
$pattern = "/[aeiou]/";
if (preg_match_all($pattern, $str, $matches)) {
    echo "Letras vocales que coinciden: " . implode(", ", $matches[0]);
} else {
    echo "¡No se encontró ninguna coincidencia!";
}
?>

El resultado del código anterior es:

匹配的元音字母: e, a, a, e, a

Función preg_replace()

La función preg_replace() se utiliza para buscar un patrón que coincida en una cadena y luego realizar un reemplazo.

preg_replace(pattern, replacement, subject)

Descripción de parámetros:

  • pattern: patrón de expresión regular.
  • replacement: la cadena de reemplazo.
  • subject: la cadena a buscar.

Ejemplo

<?php
$str = "I love PHP";
$pattern = "/PHP/";
$replacement = "EJEMPLO";
$new_str = preg_replace($pattern, $replacement, $str);
echo "Cadena después del reemplazo: " . $new_str;
?>

El resultado del código anterior es:

替换后的字符串: I love EJEMPLO

Funciones PCRE

En PHP, podemos usar la extensión PCRE para hacer coincidir patrones de cadenas.

FunciónDescripción
preg_filter Realiza una búsqueda y reemplazo de expresión regular.
preg_grep Devuelve las entradas de la matriz que coinciden con el patrón.
preg_last_error Devuelve el código de error generado por la última ejecución de expresión regular PCRE.
preg_match_all Realiza una coincidencia global de expresión regular.
preg_match Realiza una coincidencia de expresión regular.
preg_quote Escapa caracteres de expresión regular.
preg_replace_callback_array Realiza una búsqueda de expresión regular y reemplaza usando una función de retorno (callback).
preg_replace_callback Realiza una búsqueda de expresión regular y reemplaza usando una función de retorno (callback).
preg_replace Realiza una búsqueda y reemplazo de expresión regular.
preg_split Divide una cadena mediante una expresión regular.

Constantes PREG

Constante Descripción Desde qué versión
PREG_PATTERN_ORDER Los resultados se ordenan según "regla", solo se utiliza en preg_match_all(), es decir, $matches since
PREG_SET_ORDER Los resultados se ordenan según "conjunto", solo se utiliza en preg_match_all(), es decir, $matches  
PREG_OFFSET_CAPTURE VerPREG_SPLIT_OFFSET_CAPTUREla descripción de. 4.3.0
PREG_SPLIT_NO_EMPTY Esta marca le indica a preg_split() que devuelva solo las partes no vacías.  
PREG_SPLIT_DELIM_CAPTURE Esta marca le indica a preg_split() que capture también el contenido que coincida con las expresiones entre paréntesis. 4.0.5
PREG_SPLIT_OFFSET_CAPTURE Si se establece esta marca, también se devolverá el desplazamiento de cada subcadena coincidente. Tenga en cuenta que esto cambiará los valores en la matriz devuelta: cada elemento es una matriz que tiene la subcadena coincidente como elemento 0 y su desplazamiento relativo a la cadena objetivo como elemento 1. Esta marca solo se puede usar en preg_split(). 4.3.0
PREG_NO_ERROR Se devuelve al llamar a preg_last_error() cuando no hay errores de coincidencia. 5.2.0
PREG_INTERNAL_ERROR Se devuelve al llamar a preg_last_error() si hay un error interno de PCRE. 5.2.0
PREG_BACKTRACK_LIMIT_ERROR Se devuelve al llamar a preg_last_error() si se excede el límite de retroceso (backtracking). 5.2.0
PREG_RECURSION_LIMIT_ERROR Se devuelve al llamar a preg_last_error() si se excede el límite de recursión. 5.2.0
PREG_BAD_UTF8_ERROR Si el último error se debe a datos UTF-8 anómalos (disponible solo cuando se ejecuta en modo UTF-8 para expresiones regulares), se devuelve al llamar a preg_last_error(). 5.2.0
PREG_BAD_UTF8_OFFSET_ERROR Si el desplazamiento no coincide con código UTF-8 válido (disponible solo cuando se ejecuta en modo UTF-8 para expresiones regulares), se devuelve al llamar a preg_last_error(). 5.3.0
PCRE_VERSION Versión de PCRE y fecha de publicación (por ejemplo: "7.0 18-Dec-2006"). 5.2.4
Otras extensiones