English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico PHP

Tutorial Avançado PHP

PHP & MySQL

Manual de Referência PHP

Uso e exemplo da função preg_match() no PHP

PHP Expressão Regular (PCRE)

A função preg_match é usada para executar uma correspondência de expressão regular.

Sintaxe

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Procurar uma correspondência entre o subject e o padrão fornecido pela expressão regular.

Descrição dos parâmetros:

  • $pattern: Padrão a ser pesquisado, em formato de string.

  • $subject: String de entrada.

  • $matches: Se fornecido, o parâmetro matches será preenchido com os resultados da busca. $matches[0] conterá o texto correspondido pelo padrão completo, $matches[1] conterá o texto correspondido do primeiro grupo capturado, e assim por diante.

  • $flags: Os flags podem ser configurados para os seguintes valores de marcação:

  • PREG_OFFSET_CAPTURE: Se passar com este marcador, ao retornar a correspondência para cada ocorrência será adicionado o deslocamento da string (em relação à string de destino). Nota: Isso mudará o array preenchido no parâmetro matches, tornando cada elemento em um array, onde o elemento 0 é a string correspondida, o1O elemento é o deslocamento da string de correspondência no subject da string de destino.

  • Offset: Normalmente, a busca começa na posição inicial da string de destino. O parâmetro opcional offset é usado para especificar uma busca a partir de uma posição desconhecida na string de destino (em bytes).

Retorno

Retorna o número de correspondências do padrão. Seu valor será 0 (sem correspondência) ou 1 A segunda vez, porque preg_match() pára a busca após a primeira correspondência. preg_match_all() é diferente, ele continua a buscar no subject até o final. Se ocorrer um erro, preg_match() retorna FALSE.

Exemplo online

<?php
//O marcador "i" após o delimitador de padrão indica uma busca insensível a maiúsculas e minúsculas
if (preg_match("/php/i", "PHP é a linguagem de script da web de escolha.")) {
    echo "Foi encontrado a string de correspondência php.\n";
} else {
    echo "Não foi encontrado o string de correspondência php.\n";
}
?>

Os resultados da execução são exibidos a seguir:

Foi encontrado a string de correspondência php.

<?php
/* O sinal \b marca uma fronteira de palavra, então apenas a palavra independente "web" será correspondida, e não
 * Parte de uma palavra como "webbing" ou "cobweb" */
if (preg_match("/\bweb\b/i", "PHP é a linguagem de script da web de escolha.")) {
    echo "Foi encontrado a string de correspondência.\n";
} else {
    echo "Não foi encontrado o string de correspondência.\n";
}
if (preg_match("/\bweb\b/i", "PHP é a linguagem de script de site de escolha.")) {
    echo "Foi encontrado a string de correspondência.\n";
} else {
    echo "Não foi encontrado o string de correspondência.\n";
}
?>

Os resultados da execução são exibidos a seguir:

Foi encontrado a string de correspondência.
Não foi encontrado o string de correspondência.

<?php
// Obter o nome do host a partir da URL
preg_match('@^(?:http://)?([^/]+)@i',
    "http://pt.oldtoolbag.com/index.html", $matches);
$host = $matches[1];
// Obter as duas partes posteriores do nome do host
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "nome do domínio é: {$matches[0]}\n";
?>

Os resultados da execução são exibidos a seguir:

nome do domínio é: oldtoolbag.com

<?php
$str = 'foobar: 2008';
preg_match('/(?P<name>\w+:+)/', $str, $matches);
/* Abaixo está um exemplo no php 5.2.2(pcre 7.0) ou versões mais recentes, no entanto, para compatibilidade retroativa, a forma acima é a recomendada. */
// preg_match('/(?<name>\w+:+)/', $str, $matches);
print_r($matches);
?>

Os resultados da execução são exibidos a seguir:

Array
(
    [0] => foobar: 2008
    [name] => foobar
    [1] => foobar
    [digit] => 2008
    [2] => 2008
)

PHP Expressão Regular (PCRE)