logo

PHP preg_match() függvény

A preg_match() függvény a PHP beépített függvénye, amely reguláris kifejezés egyeztetést hajt végre. Ez a függvény a karakterláncban keres mintát, és ha a minta létezik, igazat ad vissza, ellenkező esetben hamis értéket ad vissza.

Általában a keresés a $subject string paraméter elejétől kezdődik. Az opcionális $offset paraméterrel a keresés a megadott pozícióból indul.

Szintaxis

 int preg_match (string $pattern, string $subject, array $matches, int $flags, int $offset) 

Megjegyzés: Az $offset egy opcionális paraméter, amely meghatározza azt a pozíciót, ahonnan a keresést kezdeni kell.

Paraméterek

Ez a funkció öt paramétert fogad el, amelyeket az alábbiakban ismertetünk:

minta

Ez egy karakterlánc típusú paraméter. Ez a paraméter karakterláncként tárolja a keresendő mintát.

tantárgy

Ez a paraméter tartalmazza azt a bemeneti karakterláncot, amelyben mintát keresünk.

mérkőzések

Ha egyezési paramétert ad meg, az tartalmazza a keresési eredményeket.

mérkőzések[0] - Ez fogja tartani a szöveget, amely illeszkedik a teljes mintához.

mérkőzések[1] - Tartalmazza azt a szöveget, amely megegyezik az első rögzített zárójeles almintával, és így tovább.

zászlókat

add a tömbbe java

A zászlók az alábbi zászlókkal rendelkezhetnek:

    PREG_OFFSET_CAPTURE:Ha ezt a jelzőt a preg_match() adja, akkor minden előforduló egyezésnél a hozzáfűződő karakterlánc-eltolás is visszatér.PREG_UNMATCHED_AS_NULL:Ha ezt a jelzőt átadja a preg_match()-ben, az egyező részmintákat NULL-ként jelentik, ellenkező esetben üres karakterláncként jelennek meg.

beszámítás

Alapértelmezés szerint a keresés a $subject paraméter elejétől kezdődik. Az offset paraméterrel adjuk meg azt a helyet, ahol a keresés kezdődjön. Ez egy opcionális paraméter.

Visszatérés típusa

A preg_match() függvény igazat ad vissza, ha a minta egyébként egyezik, akkor hamis értéket ad vissza.

Megjegyzés: Ha csak azt szeretné ellenőrizni, hogy egy karakterlánc szerepel-e egy másik karakterláncban, ne használja a preg_match() függvényt. Használd az strpos() függvényt, mert gyorsabb lesz.

Példák

 <?php //initialize a variable of string type $site = 'javatpoint'; preg_match('/(java)(t)(point)/', $site, $matches, PREG_OFFSET_CAPTURE); //display the matches result print_r($matches); ?> 

Kimenet:

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

A fenti kimenetet az alábbiak szerint láthatjuk, hogy jobban megértsük.

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

Példák: kis- és nagybetűk megkülönböztetése nélküli keresés

 <?php //initialize a variable of string type $website = 'JTP is a best online platform to learn.'; //case insensitive search for word jtp //The 'i' after pattern delimiter indicates case-insensitive search $res = preg_match('/jtp/i', $website, $matches); if ($res) { echo 'Pattern matched in string.</br>&apos;; print_r($matches); } else { echo &apos;Pattern not matched in string.&apos;; } ?&gt; 

Kimenet:

 Pattern matched in string. Array ( [0] =&gt; JTP ) 

Példák: szóhatár használatával ()

 <?php /* The  indicates the word boundary in the pattern. So, it matches only the distinct word like 'web', and words like 'coreweb' or ' webinar' do not match partially.*/ if (preg_match('/web/i', 'PHP is a web scripting language.')) { echo 'A match was found. </br>&apos;; } else { echo &apos;A match was not found. <br>&apos;; } if (preg_match(&apos;/web/i&apos;, &apos;PHP is a website scripting language.&apos;)) { echo &apos;A match was found.&apos;; } else { echo &apos;A match was not found.&apos;; } ?&gt; 

Kimenet:

 A match was found. A match was not found. 

Példák: vegye ki a domain nevet az URL-ből

 

Kimenet:

java regexben
 Domain name is: javatpoint.com 

Regex (reguláris kifejezés) szintaxis

[ABC] Egyetlen karakterrel egyezik – a, b vagy c
[^abc] Bármelyik karakternek megfelel, kivéve az a, b vagy c karaktert
[a-z] Az a-z tartomány bármely karakterére illeszkedik
[a-zA-Z] Bármely karakter az a-z vagy az A-Z tartományon belül
^ Sor eleje
$ A sor vége
A A karakterlánc kezdete
Val vel A karakterlánc vége
. Bármelyik karakter
s Bármilyen szóköz karakter
S Bármilyen nem szóköz karakter
d Bármilyen számjegy
D Bármilyen nem számjegyű
Ban ben Bármely szó karakter (betű, szám, aláhúzás)
BAN BEN Bármilyen nem szó karakter
 Szóhatár-ellenőrző
/?/ Elindítja és befejezi a reguláris kifejezést
(?) Rögzítsen mindent, ami zárójelben van ()
(a|b) a vagy b
a? Nulla vagy egy a
a* Nulla vagy több a
a+ Egy vagy több a
a{3} Pontosan 3 a
a{3,} 3 vagy több a
a{3,6} 3 és 6 között a
én Kis- és nagybetű nem érzékeny ellenőrzés
m Tegye a pont megfelelő újsorokat
x A szóköz figyelmen kívül hagyása a reguláris kifejezésben

A minta magyarázata: '[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/]'

    ''/?/''A reguláris kifejezés elejét és végét mutatja.'[^[a-zA-Z0-9._-]'Megfelel minden kis- és nagybetűnek, 0 és 9 közötti számoknak, pontoknak, aláhúzásjeleknek vagy kötőjeleknek.'+@[a-zA-Z0-9-]'Ez megegyezik a @ szimbólummal, majd a nagy- vagy kisbetűkkel, 0 és 9 közötti számokkal vagy kötőjelekkel.'+.[a-zA-Z.]{2.5}$/'A pont a fordított perjel használatával kerül kijelölésre, majd a karakterlánc végén bármilyen 2 és 5 közötti hosszúságú kis- vagy nagybetűvel megegyezik.