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
$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
$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
$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ón | Descripció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 |