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 » http://www.pcre.org/pcre.txt para mais informações.
Nenhuma biblioteca externa é necessária para compilar esta extensã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.
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.
Limite de backtracking da PCRE.
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).
Esta extensão não possui nenhum tipo resource.
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. |
Example#1 Exemplos de padrões válidos
Example#2 Exemplos de padrões inválidos