PHP: Regul�ris kifejez�sek f�ggv�nyei (Perl kompatibilis) - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links 
search for in the  
previousrecodeMinta m�dos�t�knext
Last updated: Fri, 30 Aug 2002
view the printer friendly version or the printer friendly version with notes or change language to English | Brazilian Portuguese | Chinese | Czech | Dutch | Finnish | French | German | Italian | Japanese | Korean | Polish | Romanian | Russian | Spanish | Swedish | Turkish

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�sok

Ez a kiterjeszt�s semmilyen konfigur�ci�s be�ll�t�sokat nem defini�l.

Er�forr�s t�pusok

Ez 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)
add a note about notes
[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.

add a note about notes
previousrecodeMinta m�dos�t�knext
Last updated: Fri, 30 Aug 2002
show source | credits | stats | mirror sites
Copyright © 2001, 2002 The PHP Group
All rights reserved.
This mirror generously provided by:
Last updated: Wed Sep 4 00:18:56 2002 CEST