Expressões Regulares PHP

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:

matchLinguagem de código:  PHP  ( php )

O preg_match()procura $messagepor uma correspondência com o $pattern.

A preg_match()função retorna 1se houver uma correspondência no $message, 0se não houver ou falseem 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 $matchesparâ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, 26e 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 $messagestring %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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *