English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A função preg_match é usada para executar uma correspondência de expressão regular.
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).
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.
<?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 )