Forum und email

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.

Aviso

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.

PCRE Opções de configuração
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.
Para mais detalhes e definições das constantes PHP_INI_*, veja Diretivas do arquivo php.ini.

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.

PREG constantes
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