A reguláris kifejezésekkel illeszkedési mintákat hozhatunk létre, melyekkel karakterláncokban tudunk keresni. Az ilyen kifejezés valamilyen minta szerinti szöveg keresésére, cseréjére, illetve a szöveges adatok ellenőrzésére használható.
PHP
<?php
$string = 'abcABC123';
//kiválogatja az összes karaktert a-tól z-ig és kitörli ezeket a karaktereket a $string karakterláncból
$string = preg_replace('/[a-zA-Z]/','',$string); //123
?>
Metakarakterek (Metacharacters)
\
(escape karakter) – az utána következő metakarakterre illeszkedik pl.: "\*" csillag karakterre, "\\" visszaperjelre
.
(pont) – bármely, kivéve az új sor karakter
^
(kalap jel) – a minta kezdete
$
(dollár jel) – a minta vége
|
(pipa) – logikai elágazás, előtte vagy utána levő kifejezés
[]
(szögletes zárójel) – karakter osztály, a szögletes zárójelek közötti karakterek valamelyikeire bármilyen sorrendben illeszkedik
()
(kerek zárójel) – csoportosítás, a kerek zárójelek közötti karakterekre pontos sorrendben illeszkedik
[^ab@]
(tagadás a karakter osztályban) – bármi, kivéve a, b vagy @
[0-9]
(karakter osztály tartomány) – 0 és 9 közötti számokra illeszkedik
[a-zA-Z]
(karakter osztály tartomány) – ASCII kis és nagy betűkre illeszkedik a-tól z-ig
Ismétlések (Quantifiers)
*
(csillag) – a minta 0 vagy többszöri ismétlése
+
(plusz) – a minta 1 vagy többszöri ismétlése
?
(kérdőjel) – a minta 0 vagy egyszeri ismétlése
{3}
(intervallum) – a mintában pontosan három karakter lehet
{3,}
(intervallum) – a mintában legalább három vagy több karakter lehet
{,3}
(intervallum) – a mintában legfeljebb három karakter lehet
{1,4}
(intervallum) – a mintában legalább egy, legfeljebb négy karakter lehet
Ismétlések lomhán (Quantifiers not greedily)
*?
(csillag és kérdőjel) – a minta 0 vagy többszöri ismétlése (lomhán)
+?
(plusz és kérdőjel) – a minta 1 vagy többszöri ismétlése (lomhán)
??
(kérdőjel és kérdőjel) – a minta 0 vagy egyszeri ismétlése (lomhán)
{3}?
(intervallum és kérdőjel) – a mintában pontosan három karakter lehet (lomhán)
{3,}?
(intervallum és kérdőjel) – a mintában legalább három vagy több karakter lehet (lomhán)
{,3}?
(intervallum és kérdőjel) – a mintában legfeljebb három karakter lehet (lomhán)
{1,4}?
(intervallum és kérdőjel) – a mintában legalább egy, legfeljebb négy karakter lehet (lomhán)
Ismétlések visszatérés nélkül (Quantifiers give nothing back)
*+
(csillag és plusz) – a minta 0 vagy többszöri ismétlése (visszatérés nélkül)
++
(plusz és plusz) – a minta 1 vagy többszöri ismétlése (visszatérés nélkül)
?+
(kérdőjel és plusz) – a minta 0 vagy egyszeri ismétlése (visszatérés nélkül)
{3}+
(intervallum és plusz) – a mintában pontosan három karakter lehet (visszatérés nélkül)
{3,}+
(intervallum és plusz) – a mintában legalább három vagy több karakter lehet (visszatérés nélkül)
{,3}+
(intervallum és plusz) – a mintában legfeljebb három karakter lehet (visszatérés nélkül
{1,4}+
(intervallum és plusz) – a mintában legalább egy, legfeljebb négy karakter lehet (visszatérés nélkül)
Escape-szekvenciák (Escape sequences)
\t
(HT, TAB) – tabulátor
\v
(VT, TAB) – vertikális tabulátor
\n
(LF, NL) – új sor
\r
(CR) – kocsi vissza
\a
(BEL) – csengő
\f
(FF) – lapdobás
\e
(ESC) – escape
Általános karakter osztályok (Generic Character Classes)
\d
decimális szám
\D
nem decimális szám, minden más
\s
szóköz karakter
\S
bármely más karakter a szóközön kívül
\w
bármely szó
\W
bármi, ami nem szó
Módosítók (Modifiers)
m
(PCRE_MULTILINE) – a "^" és "$" közötti több soros karakterlánc kezelése, belső sorokra illeszkedik
i
(PCRE_CASELESS) – kis és nagy betű érzékenység kikapcsolása
s
(PCRE_DOTALL) – csak egy sorra illeszkedik
x
(PCRE_EXTENDED) – szóközök és megjegyzések figyelmen kívül hagyása a mintában
e
a preg_replace() csereláncát PHP-kódként kezeli
g
minden előfordulásra illeszkedik
u
(PCRE_UTF8) – a mintát UTF–8 kódolású szövegnek tekinti
A
csak a karakterlánc elején illeszkedik (PHP)
E
csak a karakterlánc végén illeszkedik (PHP)
U
a legkevesebb karaktert tartalmazó találatokat adja vissza (PHP)
Feltételek (Assertions)
\b
szóhatár
\B
bármi, kivéve szóhatár
\A
csak a karakterlánc elején egyezik
\Z
csak a karakterlánc vagy újsor végén egyezik
\z
csak a karakterlánc végén egyezik
Másodlagos feltételek (Subassertions)
(?:bab)
(nem emlékező zárójel) – illeszkedik a bab-ra, de nem emlékezik az illesztésre
bab(?=szem)
illeszkedik a bab-ra, ha azt a szem követi
bab(?!szem)
illeszkedik a bab-ra, ha azt nem a szem követi
(?#ez itt egy megjegyzés)
(megjegyzés)
(?>\d+)bab
teljesítmény növelés, ha a bab hiányzik
(?(3)bab|szem)jankó
illeszkedik a bab-ra, ha a harmadik rész egyezik, különben a szem-re
Posix, Unicode, Perl, ASCII karakter osztályok
Posix
Unicode
Perl
ASCII
betűk és számok
[:alnum:]
\p{IsAlnum}
[a-zA-Z0-9]
betűk
[:alpha:]
\p{IsAlpha}
[a-zA-Z]
0 és 127 kódok közötti karakterek
[:ascii:]
\p{IsASCII}
szóköz vagy tabulátor
[:blank:]
[ \t]
ellenőrző karakterek
[:cntrl:]
\p{IsCntrl}
[\x00-\x1F\x7F]
decimális számok
[:digit:]
\p{IsDigit}
\d
[0-9]
nem decimális számok
\D
[^0-9]
nyomtatható karakterek, kivéve szóköz
[:graph:]
\p{IsGraph}
[\x21-\x7E]
nyomtatható karakterek és szóköz
[:print:]
\p{IsPrint}
[\x20-\x7E]
nyomtatható karakterek, kivéve betűk és számok
[:punct:]
\p{IsPunct}
[-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~]
szóköz
[:space:]
\p{IsSpace}
\s
[ \t\r\n\v\f]
szóköz (perl)
\p{IsSpacePerl}
\s
nem szóköz
\S
[^\s]
szó
[:word:]
\p{IsWord}
\w
[A-Za-z0-9_]
nem szó
\W
[^\w]
hexadecimális szám
[:xdigit:]
\p{IsXDigit}
[A-Fa-f0-9]
kisbetűk
[:lower:]
\p{IsLower}
[a-z]
nagybetűk
[:upper:]
\p{IsUpper}
[A-Z]
PHP reguláris kifejezések függvényei
A PHP a reguláris kifejezések két fajtáját támogatja, a POSIX- és a Perl-kompatibiliseket.
POSIX függvények
A PHP az 5.3.0 verzió bevezetésével a POSIX függvényekre „Deprecated: Function ereg() is deprecated…” elavultságot jelző hibaüzenetet ad! A kódot Perl-kompatibilissá kell konvertálni.
ereg()
egyezés vizsgálata
eregi()
egyezés vizsgálata (kis és nagy betű érzéketlen)
ereg_replace()
az egyezést a megadott szóra cseréli
eregi_replace()
az egyezést a megadott szóra cseréli (kis és nagy betű érzéketlen)
split()
az egyezés alapján a karakterláncot tömb elemekre darabolja
spliti()
az egyezés alapján a karakterláncot tömb elemekre darabolja (kis és nagy betű érzéketlen)
Perl-kompatibilis függvények
preg_filter
keresés és csere
preg_match()
egyezés vizsgálata
preg_match_all()
egyezés vizsgálata globálisan (az első egyezés után folytatja a keresést)
preg_replace()
az egyezést a megadott szóra cseréli
preg_replace_callback()
az egyezést a megadott függvényt meghívásával cseréli
preg_split()
az egyezés alapján a karakterláncot tömb elemekre darabolja
preg_quote()
az egyezés metakaraktereit literálissá változtatja
preg_grep()
visszaadja azokat a tömbelemeket, amelyek illeszkednek a mintára
Leírásaink azon kezdő és haladó programozóknak nyújtanak segítséget, akik már minimális szinten foglalkoztak weboldalkészítéssel. Ha szeretnél jobban elmélyülni a témában, vagy elsajátítani alapokat, még tovább fejlődni, akkor nézz körbe tanfolyam kínálatunkban, ahol a kezdőtől a profi szintig nyújtunk képzéseket a számodra.