Forum und email

Funciones de Expresiones Regulares (Compatibles con Perl)

Introducción

La sintaxis para los patrones usados en estas funciones se asemeja considerablemente con la sintaxis de Perl. La expresión debe estar rodeada por delimitadores, una barra acostada (/), por ejemplo. Cualquier caracter puede ser usado como delimitador siempre y cuando no sea alfanumérico ni la barra invertida (\). Si el caracter delimitador tiene que ser usado en la expresión misma, necesita ser escapado por la barra invertida. A partir de PHP 4.0.4, puede usar también los delimitadores de coincidencia tipo Perl (), {}, [], y <>. Vea Sintaxis de los Patrones para una explicación detallada.

El delimitador de cierre puede estar seguido de varios modificadores que afectan las coincidencias. Vea Modificadores de Patrón.

PHP soporta también expresiones regulares usando una sintaxis POSIX-extendida, por medio de las funciones regex POSIX-extendidas.

Note: Esta extensión mantiene un caché global por-hilo de expresiones regulares compiladas (hasta un máximo de 4096).

Warning

Es importante que conozca sobre las limitaciones de PCRE. Lea » https://www.pcre.org/pcre.txt para más información.

Requisitos

No se necesitan bibliotecas externas para construir esta extensión

Instalación

A partir de PHP 4.2.0, estas funciones están habilitadas por defecto. Puede deshabilitar las funciones pcre con --without-pcre-regex. Use --with-pcre-regex=DIR para especificar la ubicación de los archivos de inclusión y bibliotecas de PCRE, si no desea usar la biblioteca incluida. En versiones más antiguas, usted tendrá que configurar y compilar PHP con --with-pcre-regex[=DIR] para poder hacer uso de estas funciones.

La versión para Windows de PHP tiene soporte nativo para esta extensión. No se necesita cargar ninguna extensión adicional para usar estas funciones.

Configuración en tiempo de ejecución

El comportamiento de estas funciones está afectado por los valores definidos en php.ini.

PCRE Configuration Options
Name Default Changeable Changelog
pcre.backtrack_limit "100000" PHP_INI_ALL Available since PHP 5.2.0.
pcre.recursion_limit "100000" PHP_INI_ALL Available since PHP 5.2.0.
For further details and definitions of the PHP_INI_* constants, see the Directivas de php.ini.

A continuación se presenta una corta explicación de las directivas de configuración.

pcre.backtrack_limit integer

PCRE's backtracking limit.

pcre.recursion_limit integer

PCRE's recursion limit. Please note that if you set this value to a high number you may consume all the available process stack and eventually crash PHP (due to reaching the stack size limit imposed by the Operating System).

Tipos de recursos

Esta extensión no tiene ningún tipo de recurso definido.

Constantes predefinidas

Estas constantes están definidas por esta extensión y estarán disponibles solamente cuando la extensión ha sido o bien compilada dentro de PHP o grabada dinámicamente en tiempo de ejecución.

constantes PREG
constante descripción
PREG_PATTERN_ORDER Ordena los resultados de modo que $coincidencias[0] sea una matriz de coincidencias del patrón completo, $coincidencias[1] sea una matriz de cadenas que coincidieron con el primer subpatrón entre paréntesis, y así sucesivamente. Esta bandera sólo es usada con preg_match_all().
PREG_SET_ORDER Ordena los resultados de modo que $coincidencias[0] resulte ser una matriz del primer conjunto de coincidencias, $matches[1] sea una matriz del segundo conjunto de coincidencias, y así sucesivamente. Esta bandera únicamente es usada con preg_match_all().
PREG_OFFSET_CAPTURE Consulte la descripción de PREG_SPLIT_OFFSET_CAPTURE. Esta bandera está disponible desde PHP 4.3.0.
PREG_SPLIT_NO_EMPTY Esta bandera le dice a preg_split() que devuelva únicamente resultados que no sean vacíos.
PREG_SPLIT_DELIM_CAPTURE Esta bandera le indica a preg_split() que capture las expresiones entre paréntesis dentro del patrón de delimitación también. Esta bandera está disponible desde PHP 4.0.5.
PREG_SPLIT_OFFSET_CAPTURE Si esta bandera está activa, la posición de desplazamiento correspondiente a cada coincidencia será devuelta también. Note que esto modifica el valor devuelto a una matriz en la que cada elemento es también una matriz que consiste de la cadena coincidente en el subíndice 0 y su posición de desplazamiento al interior de la cadena de asunto en el subíndice 1. Esta bandera está disponible a partir de PHP 4.3.0 y sólo es usada por preg_split().
PREG_NO_ERROR Devuelta por preg_last_error() si no ocurrieron errores. Disponible desde PHP 5.2.0.
PREG_INTERNAL_ERROR Devuelta por preg_last_error() si hubo un error interno de PCRE. Disponible desde PHP 5.2.0.
PREG_BACKTRACK_LIMIT_ERROR Devuelta por preg_last_error() si el límite de referencias hacia atrás fue consumido. Disponible desde PHP 5.2.0.
PREG_RECURSION_LIMIT_ERROR Devuelta por preg_last_error() si el límite de recursión fue consumido. Disponible desde PHP 5.2.0.
PREG_BAD_UTF8_ERROR Devuelta por preg_last_error() si el último error fue causado por datos UTF-8 inválidos (solo cuando se ejecuta una expresión regular en modo UTF-8). Disponible desde PHP 5.2.0.
PCRE_VERSION Versión y fecha de lanzamiento de PCRE (p.ej. "7.0 18-Dec-2006"). Disponible desde PHP 5.2.4.

Ejemplos

Example#1 Ejemplos de patrones válidos

  • /<\/\w+>/
  • |(\d{3})-\d+|Sm
  • /^(?i)php[34]/
  • {^\s+(\s+)?$}

Example#2 Ejemplos de patrones inválidos

  • /href='(.*)' - carece de delimitador de cierre
  • /\w+\s*\w+/J - modificador 'J' desconocido
  • 1-\d3-\d3-\d4| - carece del delimitador de apertura

Table of Contents

  • Modificadores de Patrón — Describe los posibles modificadores en patrones de expresiones regulares
  • Sintaxis de los Patrones — Describe la sintaxis de expresiones regulares PCRE
  • preg_grep — Devolver una matriz con las entradas que coinciden con el patrón
  • preg_last_error — Returns the error code of the last PCRE regex execution
  • preg_match_all — Realizar una comparación global con una expresión regular
  • preg_match — Realizar una comparación de expresión regular
  • preg_quote — Escapar caracteres de expresiones regulares
  • preg_replace_callback — Realizar una búsqueda con expresiones regulares y generar reemplazos usando una llamada de retorno
  • preg_replace — Realizar una operación de búsqueda y reemplazo con expresiones regulares
  • preg_split — Separar una cadena por una expresión regular