PHP preg_match(): Reguláris kifejezések (Regex)

⚡ Okos összefoglaló

A PHP reguláris kifejezései mintaillesztő eszközök, amelyek egyetlen kifejezésben lévő szöveget validálnak, felosztanak és kicserélnek. Ez az útmutató a preg_match, preg_split és preg_replace alapfüggvényeket ismerteti, elmagyarázza a gyakori metakaraktereket, és lépésről lépésre bemutat egy működő e-mail-validációs mintát.

  • 🧩 Mi a reguláris kifejezés: A reguláris kifejezés egy szöveget leíró minta, amely lehetővé teszi egy függvény számára, hogy karakterláncokat validáljon, keressen vagy átalakítson.
  • preg_match: A preg_match függvény ellenőrzi, hogy egy minta megjelenik-e egy karakterláncban, és az első egyezés esetén igaz értéket ad vissza, ami ideális az ellenőrzéshez.
  • ✂️ preg_split: A preg_split függvény a minta előfordulása helyén tömbre bontja a karakterláncot, például egy mondatot szóközökre bont.
  • 🔁 terhes_csere: A preg_replace függvény megkeresi a minták minden egyező egyezését, és új szöveggel helyettesíti azokat, ami hasznos sablonokhoz és kiemeléshez.
  • 🔤 Metakarakterek: Az olyan szimbólumok, mint a ., ^, $, * és +, összetett mintákat építenek fel, például egyezést rögzítenek a kezdethez vagy a végéhez.
  • ???? E-mail minta: A karakterosztályok és a kvantifikátorok egyetlen mintává egyesülnek, amely ellenőrzi, hogy egy e-mail cím helyesen van-e formázva.
  • 🤖 AI Assist: A mesterséges intelligencia eszközei képesek egy egyszerű leírásból reguláris kifejezést írni, és egy összetett, meglévő mintát megmagyarázni vagy hibakeresni.

PHP reguláris kifejezések

Mi a reguláris kifejezés PHP-ben?

PHP reguláris kifejezésekA reguláris kifejezések, más néven regexek, egy hatékony mintaillesztő eszköz, amely egyetlen kifejezésben is végrehajtható. A reguláris kifejezések speciális karaktereket, például +, - és ^ jeleket használnak összetett kifejezések létrehozásához. Segíthetnek olyan feladatok elvégzésében, mint az e-mail címek, IP-címek és egyebek ellenőrzése.

Miért használjunk reguláris kifejezéseket?

  • A PHP reguláris kifejezések egyetlen függvény meghívásával leegyszerűsítik a karakterlánc adatokban lévő minták azonosítását. Ez kódolási időt takarít meg.
  • Felhasználói bevitel, például e-mail címek, domainnevek, telefonszámok és IP-címek érvényesítésekor
  • Kulcsszavak kiemelése a keresési eredmények között
  • Egyéni HTML-sablon létrehozásakor. A PHP Regex segítségével azonosíthatók a sabloncímkék, és tényleges adatokkal helyettesíthetők.

Beépített reguláris kifejezés függvények a PHP-ben

A PHP beépített függvényekkel rendelkezik, amelyek lehetővé teszik a reguláris kifejezésekkel való munkát, amelyeket ebben az oktatóanyagban fogunk megismerni. Nézzük meg a PHP-ben gyakran használt reguláris kifejezésfüggvényeket.

  • preg_match() PHP-ben – ez a függvény karakterláncok mintaillesztésére szolgál. Igaz értéket ad vissza, ha egyezést talál, és hamis értéket, ha nem található egyezés.
  • preg_split() PHP-ben – ez a függvény egy karakterlánc mintaillesztésére szolgál, majd az eredményeket egy numerikus tömbbe osztja fel.
  • preg_replace() PHP-ben – ez a függvény egy karakterlánc mintaegyeztetésére szolgál, majd az egyezést a megadott szövegre cseréli.

Az alábbiakban egy reguláris kifejezésfüggvény szintaxisát láthatjuk, mint például a preg_match(), preg_split() vagy a preg_replace().

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

ITT,

  • A „function_name(…)” függvény vagy preg_match(), preg_split(), vagy preg_replace() függvény lehet.
  • A „/…/” perjelek a reguláris kifejezés elejét és végét jelölik.
  • A „'/pattern/'” a minta, amelyre egyezni kell
  • A „tárgy” az a szöveges karakterlánc, amelyhez illeszkedni kell

Most nézzünk meg gyakorlati példákat, amelyek megvalósítják a fenti PHP regex függvényeket.

Preg_match() PHP-ben

Az első példa a preg_match() függvényt használja egy egyszerű mintaillesztés végrehajtására a guru szóra egy adott URL.

Az alábbi kód a preg_match() függvény implementációját mutatja be a fenti példában.

<?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";
}
?>

Tallózás a URL http://localhost/phptuts/preg_match_simple.php

Beépített reguláris kifejezés függvények

Vizsgáljuk meg a kód azon részét, amely a kimenetért felelős, preg_match('/guru/', $my_url)ITT,

  • A „preg_match(…)” a PHP regex függvénye
  • A „'/guru/'” az egyeztetendő reguláris kifejezés mintája
  • A „$my_url” az a változó, amely az egyeztetendő szöveget tartalmazza.

PHP Preg_split()

Most nézzünk egy másik példát, amely a preg_split() függvényt használja.

Fogunk egy string kifejezést, és egy tömbbe robbantjuk fel; az egyeztetendő minta egyetlen szóköz.

A példában használandó szöveg: „Imádom a reguláris kifejezéseket”.

Az alábbi kód a fenti példa megvalósítását szemlélteti.

<?php

$my_text = "I Love Regular Expressions";

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

print_r($my_array );

?>

Tallózás a URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Most nézzük meg a preg_replace() függvényt. PHP függvény amely végrehajtja a mintaegyeztetést, majd lecseréli a mintát valami másra.

Az alábbi kód a guru szót keresi a húr.

A guru szót a CSS kóddal körülvett guru szóra cseréli, amely kiemeli a háttérszínt.

<?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;

?>

Feltételezve, hogy mentette a preg_replace.php fájlt, keresse meg a következőt: URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Reguláris kifejezés metakarakterei

A fenti példák nagyon alapvető mintákat használtak. A metakarakterek lehetővé teszik számunkra, hogy összetettebb mintaillesztéseket végezzünk, például egy e-mail cím érvényességének tesztelését. Most nézzük meg a gyakran használt metakaraktereket.

Metakarakter Leírás Példa
. Bármely karakterrel egyezik, kivéve egy új sort /./ mindenre egyezik, aminek egyetlen karaktere van
^ Egy karakterlánc elejére illeszkedik, vagy karaktereket kizár A /^PH/ bármely PH-val kezdődő karakterláncra illeszkedik
$ Megfelel a karakterlánc végén található mintának /com$/ egyezik a guru99.com, yahoo.com stb. helyekkel.
* Nulla vagy több előző karakterrel egyezik /com*/ megfelel a számítógépnek, a kommunikációnak stb.
+ Az előző karakter(ek)nek legalább egyszer szerepelniük kell /yah+oo/ egyezik a yahoo-val
\ Metakarakterekből való kilépésre szolgál A /yahoo+\.com/ a pontot literális értékként kezeli
[...] Karakter osztály /[abc]/ egyezik az a, b vagy c értékkel
AZ Kisbetűknek felel meg /az/ a cool, happy stb.
AZ Megfelel a nagybetűknek /AZ/ a MIT, HOGYAN, MIÉRT stb.
0-9 0 és 9 közötti tetszőleges számnak felel meg /0-4/ találat 0,1,2,3,4

A fenti lista csak a reguláris kifejezésekben leggyakrabban használt metakaraktereket tartalmazza.

Most nézzünk egy meglehetősen összetett példát, amely egy e-mail cím érvényességét ellenőrzi.

<?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";
}
?>

Az e-mail-érvényesítési minta magyarázata

ITT,

  • A „/…/” billentyűk kezdik és végzik a reguláris kifejezést.
  • Az „^[a-zA-Z0-9._-]” kifejezés bármilyen kis- vagy nagybetűt, 0 és 9 közötti számot, valamint pontot, aláhúzásjelet vagy kötőjelet talál.
  • A „+@[a-zA-Z0-9-]” karakterlánc a @ szimbólumot követő kis- vagy nagybetűkre, 0 és 9 közötti számokra vagy kötőjelekre illeszkedik.
  • A „+\.[a-zA-Z.]{2,5}$/” karakterlánc a pontot a fordított perjellel helyettesíti, majd a karakterlánc végén található 2 és 5 közötti hosszúságú kis- vagy nagybetűkre illeszkedik.

Tallózás a URL http://localhost/phptuts/preg_match.php

PHP e-mail-érvényesítési minta

Amint a fenti bontásból látható, a metakarakterek nagyon hatékonyak a minták egyeztetésében.

GYIK

A preg_match függvény az első találatnál megáll, és a $matchs mezőt ezzel az egy találattal tölti ki. A preg_match_all függvény minden találatot megkeres a karakterláncban, és egy beágyazott tömbben adja vissza őket, amely illik például egy adott egyezéshez.tracismétlődő elemek kezelése.

A módosítók a záró elválasztójelet követik, és megváltoztatják az egyezési viselkedést. Az i módosító a mintát kis- és nagybetűk közötti különbségtételre készteti, az m minden sort külön kezel ^ és $ esetén, az s pedig lehetővé teszi, hogy a pont illeszkedjen az új sorokhoz, mint például a /guru/i fájlban.

A minta egyes részeit zárójelek közé kell tenni, hogy rögzítési csoportokat hozzunk létre. A preg_match után a teljes egyezés a $matches[0] mappában található, majd minden csoport a $matches[1], $matches[2] és így tovább mappákban található.

Igen. Írd le a kívánt szöveget, például egy telefonszámot vagy dátumformátumot, és a mesterséges intelligencia előállítja a mintát, valamint egy preg_match példát. Teszteld valós és szélsőséges esetekre vonatkozó bemenetekkel, mielőtt rá hagyatkoznál.

Igen. Illeszd be a mintát, és a mesterséges intelligencia tokenről tokenre bontja, elmagyarázza, hogy az egyes részek mivel egyeznek, rámutat, hogy miért hibás bizonyos bemenetek esetén, majd javasol egy javított verziót.

Foglald össze ezt a bejegyzést a következőképpen: