|
|
LXXXVII. Regul�ris kifejez�sek f�ggv�nyei (Perl kompatibilis)Bevezet�s
Ezekben a f�ggv�nyekben haszn�latos mint�k szintaktik�ja nagyon
hasonl�t a PERL-ben megismerthez. A kifejez�seket hat�rol�jelek
k�z� kell rakni, p�ld�ul perjelek / k�z�. Az alfanumerikus karakterekt�l
�s a visszaperjelt�l (\) eltekintve b�rmi haszn�lhat� hat�rol�jelk�nt. Ha a
hat�rol�jel mag�ban a kifejez�sben is szerepel, akkor egy visszaperjelet
(\) kell el��rni. A PHP 4.0.4-s verzi�j�t�l kezdve lehet�s�g van a (),
{}, [], �s <> p�rban �ll� hat�rol�k haszn�lat�ra, ahogy Perl-ben is.
A lez�r� hat�rol�jelet k�l�nf�le m�dos�t�k k�vethetik, amelyek a
mintailleszked�st befoly�solj�k. B�vebben: Minta m�dos�t�k fejezet.
PHP a kiterjesztett POSIX regul�ris
kifejez�seket is t�mogatja.
K�vetelm�nyek
A regul�ris kifejez�sek t�mogat�s�t a PCRE k�nyvt�r biztos�tja.
Ez ny�lt forr�sk�d� szoftver, amit Philip Hazel �rt, �s a szerz�i
jogok az angliai Cambridge Egyetem tulajdona. A csomag hozz�f�rhet�
a c�men.
Telep�t�s
PHP 4.2.0 -t�l kezdve ezek f�ggv�nyek alap�rtelmez�sben telep�tve lesznek.
R�gebbi verzi�k eset�n a PHP-t a --with-pcre-regex[=DIR] opci�val kellett ford�tani.
A f�ggv�nyeket le lehet tiltani ford�t�s idej�n a --without-pcre-regex opci� megad�s�val.
Fut�sidej� be�ll�t�sokEz a kiterjeszt�s semmilyen konfigur�ci�s
be�ll�t�sokat nem defini�l. Er�forr�s t�pusokEz a kiterjeszt�s semmilyen er�forr�s
t�pust nem defini�l. El�re defini�lt �lland�k
Az itt list�zott �lland�kat ez a kiterjeszt�s
defini�lja, �s csak akkor el�rhet�ek, ha az adott
kiterjeszt�s be van ford�tva a PHP-be, vagy
dinamikusan bet�lt�tt. T�bl�zat 1. PREG �lland�k �lland� | le�r�s |
---|
PREG_PATTERN_ORDER |
Azt eredm�nyezi, hogy a $matches[0] olyan t�mb lesz,
ahol az �sszes a teljes mint�ra illeszked� sz�vegr�sz lesz egym�s ut�n,
a $matches[1] t�mbben pedig azok a sz�vegr�szek,
amelyek els� "gy�jt�" r�szmint�ra illeszkednek, �s �gy tov�bb. Ezt a
preg_match_all() f�ggv�ny param�terek�nt lehet
haszn�lni.
| PREG_SET_ORDER |
Azt eredm�nyezi, hogy $matches[0]-ben az els� illeszt�s eredm�nyeit,
a $matches[1] a m�sodik�t fogja tartalmazni, �s �gy tov�bb. Ezt a
preg_match_all() f�ggv�ny param�terek�nt lehet
haszn�lni.
| PREG_OFFSET_CAPTURE |
L�sd a PREG_SPLIT_OFFSET_CAPTURE �lland�t! Ez
a PHP 4.3.0 verzi�j�t�l haszn�lhat�.
| PREG_SPLIT_NO_EMPTY |
Ennek hat�s�ra csak a nem �res elemeket adja vissza a
preg_split() f�ggv�ny eredm�ny�l.
| PREG_SPLIT_DELIM_CAPTURE |
Ekkor a kerekz�r�jelek k�z� fogott ("gy�jt�") r�szmint�ra illeszked�
sz�vegr�szeket is visszadja a preg_split() f�ggv�ny.
Ez a jelz� a PHP 4.0.5 verzi�j�t�l haszn�lhat�.
| PREG_SPLIT_OFFSET_CAPTURE |
Minden egyez�shez az egyez�s kezd�pozici�j�t is visszaadja az
eredm�nyben. Ez maga ut�n vonja, hogy a visszaadott t�mb minden eleme
olyan t�mb lesz, amelynek a 0. indexe az illeszked�
sz�veget tartalmazza, m�g az 1. indexen lev� elem
ennek a subject-en bel�li kezd�pozici�j�t. Ez
a jelz�bit PHP 4.3.0 verzi�j�t�l haszn�lhat�.
|
P�ld�k
P�lda 1. P�ld�k �rv�nyes mint�kra /<\/\w+>/ |(\d{3})-\d+|Sm /^(?i)php[34]/ {^\s+(\s+)?$}
|
P�lda 2. P�ld�k helytelen mint�kra
/href='(.*)' - hi�nyz� lez�r� hat�rol�karakter
/\w+\s*\w+/J - ismeretlen m�dos�t� 'J'
1-\d3-\d3-\d4| - hi�nyz� kezd� hat�rol�karakter
|
- Tartalom
- Minta m�dos�t�k -- A lehets�ges, PCRE regul�ris kifejez�sek ki�rt�kel�s�t
befoly�sol� m�dos�t�k felsorol�sa
- Regur�lis kifejez�sek szintaxisa -- PCRE regur�lis kifejez�sek nyelvtan�nak le�r�sa
- preg_grep --
Visszaadja azokat a t�mbelemeket, amelyek illeszkednek a mint�ra
- preg_match_all -- Regul�ris kifejez�s teljesk�r� illeszt�s�t v�gzi
- preg_match -- Regul�ris kifejez�st illeszt a megadott sz�vegre
- preg_quote -- Regul�ris kifejez�s metakaraktereit liter�liss�
v�ltoztatja
- preg_replace_callback -- Regul�ris kifejez�s alapj�n keres �s a megadott f�ggv�nyt megh�vva v�gzi a cser�t
- preg_replace -- Regul�ris kifejez�s alapj�n keres �s cser�l
- preg_split -- Sztringet darabol fel regul�ris kifejez�sre illeszked� r�szei ment�n
User Contributed Notes Regul�ris kifejez�sek f�ggv�nyei (Perl kompatibilis) |
|
[email protected]
14-Jul-2000 05:59 |
|
... so I find the solution for PCRE under Linux. Download the source code.
Compile it with --with-pcre-regexmake parameter. It's working just fine
with PHP 4.0.1pl2. One more time I learned: the safest (and the fastest)
way is build your own code from the source. :-)
|
|
[email protected]
24-Jul-2000 10:13 |
|
Please add a link from the ordinary regular expressions to these. Otherwise
they are easy to miss, when looking for regex functions, due the
abreviation.
|
|
[email protected]
12-Mar-2001 11:09 |
|
Ever wondered how to use a function within a PCRE? here's
how:
$content = preg_replace("/\*(\w+)\*/e",
"lookupImageCode($1)", $content);
This code replaces
all instances of *text*, where text is a code for an image, with the
output of function lookupImageCode(). The /e and the quotes around the
function name and arguments are essential to make this work :-)
I
use this on one of my websites to query a database and cross-reference
image filenames with special codes input by press release writers in our
client's company. They type the code of an image (displayed in a
catalogue onscreen on the site's backend) and this little wonder of code
changes it to an img src tag on the fly as the page is
loaded.
Enjoy!
p.s. thanks to the guys on #php who
helped sort this out at 4am in the morning my time! (donut, jfk, cardinal)
Contact me if you like.
|
|
[email protected]
22-Aug-2001 01:09 |
|
There is some really good/simple documentation of Perl regular expressions
at
|
|
[email protected]
06-Mar-2002 06:33 |
|
If you're venturing into new regular expression territory with a lack of
useful examples then it would pay to get familiar with this
page:
|
|
[email protected]
12-Mar-2002 07:56 |
|
Here's a translation of Friedl's email address matching regexp:
Friedl's
perl original is available here:
|
|
[email protected]
14-Jun-2002 04:47 |
|
This is the easiest tutorial for regular expressions I have found
yet. Beginners should start here. This tutorial is originally
written for Jscript, but I think everything applies to PHP. (I had to
chop the following url into small pieces to be able to post it
here)
script56/html/js56reconRegularExpressions.asp
|
|
[email protected]
31-Jul-2002 06:18 |
|
Back References should be escaped: such as \\1 \\2
Example:
preg_match("/<(\w+)(.*?)>(.+)<\/\\1>/s", $data,
$regs);
This attempts to parse XML/HTML like data...
Where: $regs[1] is the tag name $regs[2] are any tag
properties $regs[3] is the data within the tag
This handles the
base case for an algorithm that could parse an entire XML form
recursively.
|
|
|
| |