Funções para Expressões Regulares (Compatíveis com Perl)
Introdução
A sintaxe para padrões usados nestas funções assemelham-se com Perl. A expressão precisa estar incluida entre delimitadores, uma barra (/), por exemplo. Qualquer caractere pode ser usado para delimitar desde que não seja alfanumérico ou backslash (\). Se o caractere delimitador tem de ser usado na própria expressão, ele necessitará de escape. Desde o PHP 4.0.4, você pode também usar delimitadores Perl-style (), {}, [], e <>. Veja Sintaxe do Padrão para mais detalhes.
No final do delimitador pode ser seguido por vários modificadores que afetam a combinação. Veja Modificadores do Padrão.
PHP também suporta expressões regulares usando a sintaxe POSIX-extendido utilizando as funções para regex no padrão POSIX-extendido.
Nota: Esta extensão mantém uma global por thread cache da expressão regular compilada.
Você precisa estar ciente de algumas limitações da PCRE. Leia » https://www.pcre.org/pcre.txt para mais informações.
Dependências
Nenhuma biblioteca externa é necessária para compilar esta extensão.
Instalação
Desde o PHP 4.2.0 estas funções são disponíveis por padrão. Você pode torná-las indisponível com --without-pcre-regex. Use --with-pcre-regex=DIR para especificar o diretório onde está localizado os arquivos da biblioteca PCRE, caso não use a biblioteca empacotada. Em antigas versões você precisava configurar e compilar o PHP com --with-pcre-regex[=DIR] para usar estas funções.
A versão para Windows do PHP tem suporte embutido para esta extensão. Você não precisa carregar nenhuma extensão adicional para utilizar essas funções.
Configurações em execução
O comportamento dessas funções podem ser modificado pelas configurações do php.ini.
Nome | Padrão | Modificável | Changelog |
---|---|---|---|
pcre.backtrack_limit | 100000 | PHP_INI_ALL | Disponível desde o PHP 5.2.0. |
pcre.recursion_limit | 100000 | PHP_INI_ALL | Disponível desde o PHP 5.2.0. |
Breve descrição das diretivas de configuração.
- pcre.backtrack_limit integer
-
Limite de backtracking da PCRE.
- pcre.recursion_limit integer
-
Limite de recursões da PCRE. Nota que se você definir este valor para um número bem alto poderá consumir toda a pilha de processo disponível e eventualmente travar o PHP (devido a alcançar o limite do tamanho de pinha imposto pelo Sistema Operacional).
Tipos Resource
Esta extensão não possui nenhum tipo resource.
Constantes pré-definidas
As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.
constante | descrição |
---|---|
PREG_PATTERN_ORDER | Ordena os resultados de modo que $matches[0] seja um array de todas as combinações do padrão. $matches[1] é um array de strings combinadas pelo primeiro subpadrão, e assim por diante. Esta flag é somente usada com preg_match_all(). |
PREG_SET_ORDER | Ordena os resultados de modo que $matches[0] seja um array do primeiro conjunto de combinações, $matches[1] é um array do segundo conjunto de combinações, e assim por diante. Esta flag é somente usada com preg_match_all(). |
PREG_OFFSET_CAPTURE | Veja a descrição da PREG_SPLIT_OFFSET_CAPTURE. Esta flag está disponível desde o PHP 4.3.0. |
PREG_SPLIT_NO_EMPTY | Esta flag diz a preg_split() não retornar pedaços em branco. |
PREG_SPLIT_DELIM_CAPTURE | Esta flag diz a preg_split() capturar expressões entre parênteses no delimitador do padrão também. Está flag está disponível desde o PHP 4.0.5. |
PREG_SPLIT_OFFSET_CAPTURE | Se esta flag é usada, para cada combinação será retornada também a posição da string. Note que esta modificação retorna valores em um array onde cada elemento é um array consistindo da string combinada no índice 0 e a posição na string alvo na índice 1. Esta flag está disponível desde o PHP 4.3.0 e é somente usada por preg_split(). |
PREG_NO_ERROR | Retornado pela preg_last_error() se não haver erros. Disponível desde o PHP 5.2.0. |
PREG_INTERNAL_ERROR | Retornado pela preg_last_error() se houve um erro interno na PCRE. Disponível desde o PHP 5.2.0. |
PREG_BACKTRACK_LIMIT_ERROR | Retornado pela preg_last_error() se backtrack limit foi esgotado. Disponível desde o PHP 5.2.0. |
PREG_RECURSION_LIMIT_ERROR | Retornado pela preg_last_error() se recursion limit foi esgotado. Disponível desde o PHP 5.2.0. |
PREG_BAD_UTF8_ERROR | Retornado pela preg_last_error() se o último erro foi causado por malformed UTF-8 data (somente quando usado a regex em modo UTF-8). Disponível desde o PHP 5.2.0. |
PCRE_VERSION | Versão da PCRE e data de liberação (e.g. "7.0 18-Dec-2006"). Disponível desde o PHP 5.2.4. |
Exemplos
Example#1 Exemplos de padrões válidos
- /<\/\w+>/
- |(\d{3})-\d+|Sm
- /^(?i)php[34]/
- {^\s+(\s+)?$}
Example#2 Exemplos de padrões inválidos
- /href='(.*)' - faltando o delimitador final
- /\w+\s*\w+/J - modificador 'J' desconhecido
- 1-\d3-\d3-\d4| - faltando delimitador inicial
Índice
- Modificadores do Padrão — Descreve possíveis modificadores na padrão regex
- Pattern Syntax — Describes PCRE regex syntax
- preg_grep — Retorna as entradas do array que combinaram com o padrão
- preg_last_error — Retorna o código de erro da última regex PCRE executada
- preg_match_all — Perform a global regular expression match
- preg_match — Perform a regular expression match
- preg_quote — Quote regular expression characters
- preg_replace_callback — Executa uma busca usando expressão regular e modifica usando um callback
- preg_replace — Perform a regular expression search and replace
- preg_split — Divide a string por uma expressão regular