Resumo : neste tutorial, você aprenderá sobre expressões regulares PHP e funções que funcionam com expressões regulares, incluindo preg_match()
, preg_match_all()
e preg_replace()
.
Introdução às expressões regulares do PHP
As funções de string do PHP permitem testar se uma string contém uma substring ( str_contains()
) ou substituir todas as ocorrências de uma substring por outra string ( str_replace()
).
No entanto, estas funções lidam com padrões fixos. Eles não funcionarão com padrões flexíveis. Por exemplo, se você quiser pesquisar qualquer número em uma string, str_contains()
não funcionará.
Para pesquisar ou substituir uma string usando um padrão, você usa expressões regulares.
Uma expressão regular é uma string que descreve um padrão como números de telefone, números de cartão de crédito e endereços de e-mail.
Crie expressões regulares
Para criar uma expressão regular, você coloca um padrão em barras como este:
'/pattern/';
Linguagem de código: PHP ( php )
Por exemplo:
<?php
$pattern = '/\d+/';
Linguagem de código: PHP ( php )
O $pattern
é uma string. Além disso, é uma expressão regular que corresponde a um número com um ou mais dígitos. Por exemplo, corresponde aos números 1, 20, 300, etc.
Observe que você aprenderá como formar expressões regulares flexíveis no tutorial a seguir.
As barras são delimitadores. Os delimitadores podem ser um dos seguintes caracteres ~
, !
, @
, ou colchetes, incluindo , , , . Os colchetes ajudam a melhorar a legibilidade das expressões regulares em alguns casos.#
$
{}
()
[]
<>
Observe que você não pode usar caracteres alfanuméricos, multibyte e barras invertidas ( \
) como delimitadores.
A seguinte expressão regular usa chaves como delimitadores:
<?php
$pattern = '{\d+}';
Linguagem de código: PHP ( php )
Pesquisar strings usando expressões regulares
Para pesquisar uma string em busca de uma correspondência com um padrão, você usa as funções preg_match()
e preg_match_all()
.
Função PHP preg_match()
Para pesquisar com base em uma expressão regular, você usa a preg_match()
função. Por exemplo:
<?php
$pattern = '{\d+}';
$message = 'PHP 8 was released on November 26, 2020';
if (preg_match($pattern, $message)) {
echo "match";
} else {
echo "not match";
}
Linguagem de código: PHP ( php )
Saída:
match
Linguagem de código: PHP ( php )
O preg_match()
procura $message
por uma correspondência com o $pattern
.
A preg_match()
função retorna 1
se houver uma correspondência no $message
, 0
se não houver ou false
em caso de falha.
Para obter o texto que corresponde ao padrão, adicione o terceiro parâmetro à preg_match()
função como no exemplo a seguir:
<?php
$pattern = '{\d+}';
$message = 'PHP 8 was released on November 26, 2020';
if (preg_match($pattern, $message, $matches)) {
print_r($matches);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => 8
)
Linguagem de código: PHP ( php )
O $matches
parâmetro contém todas as correspondências. O $matches[0]
armazena o texto que corresponde ao padrão. Neste exemplo, é o número 8.
Os $matches[1]
, $matches[2]
,… armazenam os textos que correspondem ao primeiro, segundo,… grupo de captura —mais sobre isso no tutorial do grupo de captura .
O preg_match()
only retorna a primeira correspondência e para de pesquisar assim que encontra a primeira. Para encontrar todas as correspondências, você usa a preg_match_all()
função.
Função PHP preg_match_all()
A preg_match_all()
função procura todas as correspondências com uma expressão regular. Por exemplo:
<?php
$pattern = '{\d+}';
$message = 'PHP 8 was released on November 26, 2020';
if (preg_match_all($pattern, $message, $matches)) {
print_r($matches);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => Array
(
[0] => 8
[1] => 26
[2] => 2020
)
)
Linguagem de código: PHP ( php )
Neste exemplo, preg_match_all()
coloca todas as correspondências em uma matriz multidimensional com o primeiro elemento contendo os textos ( 8
, 26
e 2020
) que correspondem ao padrão.
A preg_match_all()
função retorna o número de correspondências, que pode ser zero ou um número positivo.
Substitua strings usando expressões regulares
Para substituir strings que correspondem a uma expressão regular, você usa a preg_replace()
função. Por exemplo:
<?php
$pattern = '/\d+/';
$message = 'PHP 8 was released on 11/26/2020';
echo preg_replace($pattern, '%d', $message);
Linguagem de código: PHP ( php )
Saída:
PHP %d was released on %d/%d/%d
Neste exemplo, a preg_replace()
função substitui todos os números pela $message
string %d
.
Resumo
- Expressões regulares PHP são strings com padrões delimitados por delimitadores, por exemplo
"/pattern/"
. - A
preg_match()
função procura uma correspondência com um padrão em uma string. - A
preg_match_all()
função procura todas as correspondências com um padrão em uma string. - A
preg_replace()
função procura uma string em busca de correspondências com um padrão e as substitui por uma nova string ou padrão.