PHP preg_match(): Wyrażenia regularne (Regex)

⚡ Inteligentne podsumowanie

Wyrażenia regularne w PHP to narzędzia do dopasowywania wzorców, które walidują, dzielą i zamieniają tekst w jednym wyrażeniu. Ten przewodnik omawia podstawowe funkcje preg_match, preg_split i preg_replace, wyjaśnia typowe metaznaki i krok po kroku buduje działający wzorzec walidacji adresu e-mail.

  • 🧩 Czym jest wyrażenie regularne: Wyrażenie regularne to wzorzec opisujący tekst, umożliwiający jednej funkcji walidację, wyszukiwanie lub transformację ciągów znaków.
  • dopasowanie_preg: preg_match sprawdza, czy wzorzec występuje w ciągu znaków i zwraca wartość true przy pierwszym dopasowaniu, co jest idealnym rozwiązaniem do walidacji.
  • ✂️. preg_split: preg_split rozbija ciąg na tablicę w miejscach, w których występuje wzorzec, np. dzieląc zdanie ze względu na spacje.
  • 🔁 preg_replace: preg_replace wyszukuje wszystkie pasujące do wzorca teksty i zastępuje je nowym tekstem, co jest przydatne przy tworzeniu szablonów i wyróżnianiu.
  • 🔤 Metaznaki: Symbole takie jak ., ^, $, * i + tworzą złożone wzorce, na przykład zakotwiczenie dopasowania na początku lub na końcu.
  • 📧 Wzór wiadomości e-mail: Klasy znaków i kwantyfikatory łączą się w jeden wzorzec, który sprawdza, czy adres e-mail jest poprawnie sformatowany.
  • 🤖 Asystent AI: Narzędzia AI potrafią napisać wyrażenie regularne na podstawie prostego opisu i wyjaśnić lub debugować złożony wzorzec.

Wyrażenia regularne PHP

Czym jest wyrażenie regularne w PHP?

Wyrażenia regularne PHP, znane również jako wyrażenia regularne, to potężne narzędzie do dopasowywania wzorców, które można wykonać w jednym wyrażeniu. Wyrażenia regularne używają znaków specjalnych, takich jak +, - i ^, do tworzenia złożonych wyrażeń. Mogą one pomóc w wykonywaniu zadań, takich jak weryfikacja adresów e-mail, adresów IP i innych.

Po co używać wyrażeń regularnych

  • Wyrażenia regularne PHP upraszczają identyfikację wzorców w danych tekstowych poprzez wywołanie jednej funkcji. Oszczędza nam to czas kodowania.
  • Podczas weryfikacji danych wprowadzanych przez użytkownika, takich jak adresy e-mail, nazwy domen, numery telefonów i adresy IP
  • Wyróżnianie słów kluczowych w wynikach wyszukiwania
  • Podczas tworzenia niestandardowego szablonu HTML. Regex w PHP można wykorzystać do identyfikacji tagów szablonów i zastąpienia ich rzeczywistymi danymi.

Wbudowane funkcje wyrażeń regularnych w PHP

PHP posiada wbudowane funkcje, które pozwalają nam pracować z wyrażeniami regularnymi, które poznamy w tym samouczku. Przyjrzyjmy się najczęściej używanym funkcjom wyrażeń regularnych w PHP.

  • preg_match() w PHP – ta funkcja służy do dopasowania wzorca do ciągu znaków. Zwraca wartość true, jeśli dopasowanie zostanie znalezione, i false, jeśli nie zostanie znalezione.
  • preg_split() w PHP – funkcja ta służy do dopasowania wzorca do ciągu znaków, a następnie podziału wyników na tablicę liczbową.
  • preg_replace() w PHP – ta funkcja służy do dopasowania wzorca na ciągu znaków, a następnie zastąpienia dopasowania określonym tekstem.

Poniżej przedstawiono składnię funkcji wyrażenia regularnego, takiej jak preg_match(), preg_split() lub preg_replace().

<?php
function_name('/pattern/',subject);
?>

TUTAJ,

  • “function_name(…)” to albo preg_match(), preg_split() albo preg_replace().
  • „/…/” ukośniki oznaczają początek i koniec naszego wyrażenia regularnego
  • „'/pattern/'” to wzór, który musimy dopasować
  • „Temat” to ciąg tekstowy, do którego ma zostać dopasowane

Przyjrzyjmy się teraz praktycznym przykładom implementującym powyższe funkcje wyrażeń regularnych PHP.

Preg_match() w PHP

W pierwszym przykładzie użyto funkcji preg_match() do wykonania prostego dopasowania wzorca dla słowa guru w danym URL.

Poniższy kod pokazuje implementację funkcji preg_match() dla powyższego przykładu.

<?php
$my_url = "www.guru99.com";
if (preg_match("/guru/", $my_url))
{
echo "the url $my_url contains guru";
}
else
{
echo "the url $my_url does not contain guru";
}
?>

Przejdź do URL http://localhost/phptuts/preg_match_simple.php

Wbudowane funkcje wyrażeń regularnych

Przyjrzyjmy się części kodu odpowiedzialnej za nasz wynik, preg_match('/guru/', $my_url). TUTAJ,

  • „preg_match(…)” to funkcja regex PHP
  • „'/guru/'” to wzorzec wyrażenia regularnego, który ma zostać dopasowany
  • „$my_url” to zmienna zawierająca tekst, do którego ma zostać dopasowane.

PHP Preg_split()

Przyjrzyjmy się teraz innemu przykładowi wykorzystującemu funkcję preg_split().

Weźmiemy frazę łańcuchową i rozbijemy ją na tablicę; wzorcem do dopasowania jest pojedyncza spacja.

Ciąg tekstowy, który zostanie użyty w tym przykładzie, to „Kocham wyrażenia regularne”.

Poniższy kod ilustruje implementację powyższego przykładu.

<?php

$my_text = "I Love Regular Expressions";

$my_array = preg_split("/ /", $my_text);

print_r($my_array );

?>

Przejdź do URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Przyjrzyjmy się teraz preg_replace() Funkcja PHP który wykonuje dopasowanie wzorca, a następnie zastępuje wzorzec czymś innym.

Poniższy kod wyszukuje słowo guru w a ciąg.

Zastępuje słowo guru słowem guru otoczonym kodem CSS, który podświetla kolor tła.

<?php

$text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com";

$text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text);

echo $text;

?>

Zakładając, że zapisałeś plik preg_replace.php, przejdź do URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Metaznaki wyrażeń regularnych

W powyższych przykładach wykorzystano bardzo podstawowe wzorce. Metaznaki pozwalają nam na przeprowadzanie bardziej złożonych dopasowań wzorców, takich jak testowanie poprawności adresu e-mail. Przyjrzyjmy się teraz powszechnie używanym metaznakom.

Metaznak OPIS Przykład
. Dopasowuje dowolny pojedynczy znak z wyjątkiem nowej linii /./ dopasowuje wszystko, co ma pojedynczy znak
^ Dopasowuje początek ciągu lub wyklucza znaki /^PH/ dopasowuje dowolny ciąg zaczynający się od PH
$ Dopasowuje wzór na końcu ciągu /com$/ pasuje do guru99.com, yahoo.com itd.
* Dopasowuje zero lub więcej z poprzednich znaków /com*/ odpowiada komputerowi, komunikacji itp.
+ Wymaga, aby poprzednie znaki pojawiły się co najmniej raz /yah+oo/ pasuje do yahoo
\ Służy do ucieczki metaznaków /yahoo+\.com/ traktuje kropkę jako wartość dosłowną
[...] Klasa postaci /[abc]/ pasuje do a, b lub c
AZ Pasuje do małych liter /az/ pasuje do fajnych, szczęśliwych itp.
AZ Pasuje do wielkich liter /AZ/ odpowiada CO, JAK, DLACZEGO itp.
0-9 Dopasowuje dowolną liczbę z zakresu od 0 do 9 /0-4/ pasuje do 0,1,2,3,4

Powyższa lista zawiera tylko najczęściej używane metaznaki w wyrażeniach regularnych.

Przyjrzyjmy się teraz dość złożonemu przykładowi sprawdzającemu poprawność adresu e-mail.

<?php
$my_email = "name@company.com";
if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) {
echo "$my_email is a valid email address";
}
else
{
echo "$my_email is NOT a valid email address";
}
?>

Wyjaśnienie wzorca walidacji wiadomości e-mail

TUTAJ,

  • „/…/” rozpoczyna i kończy wyrażenie regularne
  • „^[a-zA-Z0-9._-]” oznacza dowolne litery małe i wielkie, cyfry od 0 do 9 oraz kropki, podkreślenia i myślniki.
  • „+@[a-zA-Z0-9-]” oznacza symbol @, po którym następują małe lub wielkie litery, cyfry od 0 do 9 lub myślniki.
  • „+\.[a-zA-Z.]{2,5}$/” ucieka od kropki za pomocą ukośnika odwrotnego, a następnie dopasowuje wszystkie małe lub wielkie litery o długości znaku od 2 do 5 na końcu ciągu.

Przejdź do URL http://localhost/phptuts/preg_match.php

Wzorzec walidacji poczty elektronicznej PHP

Jak widać z powyższego zestawienia, metaznaki są bardzo skutecznym narzędziem dopasowywania wzorców.

FAQ

preg_match zatrzymuje się na pierwszym dopasowaniu i wypełnia $matches tym jednym wynikiem. preg_match_all znajduje każde dopasowanie w ciągu i zwraca je wszystkie w zagnieżdżonej tablicy, co odpowiada np.tracpowtarzające się elementy.

Modyfikatory podążają za ogranicznikiem zamykającym i zmieniają sposób dopasowania. Modyfikator „i” sprawia, że ​​wzorzec nie uwzględnia wielkości liter, „m” traktuje każdy wiersz osobno dla znaków ^ i $, a „s” pozwala kropce pasować do nowych wierszy, jak w „/guru/i”.

Umieść części wzorca w nawiasach, aby utworzyć grupy przechwytujące. Po preg_match pełne dopasowanie znajduje się w $matches[0], a każda grupa znajduje się w $matches[1], $matches[2] itd.

Tak. Opisz tekst, który chcesz dopasować, na przykład numer telefonu lub format daty, a AI wygeneruje wzorzec wraz z przykładem preg_match. Przetestuj go na rzeczywistych i skrajnych danych wejściowych, zanim na nim polegasz.

Tak. Wklej wzór, a AI rozłoży go na czynniki pierwsze, wyjaśni, do czego pasuje każda część, wskaże, dlaczego nie działa przy określonych danych wejściowych, a następnie zasugeruje poprawioną wersję.

Podsumuj ten post następująco: