PHP kézikönyv
Előző
Következő
A subject szövegben megkeresi az összes, a pattern mintára illeszkedő részt, és a matches tömbbe menti azokat az order paraméterben meghatározott sorrendben.
Amint az első illeszkedés megtalálta, a soron következő illesztést az utolsó illeszkedés végétől folytatja.
A flag paraméter az alábbi értékek kombinációja lehet (bár értelmetlen a PREG_PATTERN_ORDER -t és a PREG_SET_ORDER -t együtt használni):
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.
preg_match_all ("| [^] + (.*) / [^] + |U"," b példa: / b div align=left ez itt a teszt szöveg / div ", $out, PREG_PATTERN_ORDER); print $out[0][0] .", ".$out[0][1] ."\n"; print $out[1][0] .", ".$out[1][1] ."\n"
Ez a példa az alábbi eredményt adja:
b példa: / b, div align=left ez itt a teszt szöveg / div példa:, ez itt a teszt szöveg
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.
preg_match_all ("| [^] + (.*) / [^] + |U"," b példa: / b div align=left ez itt a teszt szöveg / div ", $out, PREG_SET_ORDER); print $out[0][0] .", ".$out[0][1] ."\n"; print $out[1][0] .", ".$out[1][1] ."\n"
Ez a példa az alábbi eredményt adja:
b példa: / b, példa: div align=left ez itt a teszt szöveg / div, ez itt a teszt szöveg
Minden egyezéshez az egyezés kezdőpozíció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ó.
Ha nincs megadva a flag paraméter, akkor az alapértelmezés a PREG_PATTERN_ORDER.
Ez a függvény az összes illeszkedés számával tér vissza (ami lehet akár 0 (!) is sikertelen illesztés esetén), vagy FALSE -szal hiba esetén.
Példa 1.
Az összes telefonszám kigyűjtése egy adott szövegből.
preg_match_all ("/ \(? (\d{3})?\)? (?(1) [\-\s]) \d{3}-\d{4} / x", "Hívd a 555-1212 vagy 1-800-555-1212 számot", $phones);
Példa 2.
HTML elemek keresése (mohón)
/ / A \\2 példa a "gyűjtő" részmintára történő hivatkozásra.
Ez mondja meg / / PCRE-nek, hogy a másodikként megadott kerek zárójelre - ami ebben az / / esetben ([\w]+) - illesztett szövegnek kell szerepelnie a hivatkozás / / helyén is.
A plusz visszaperjelre azért van szükség, mert a minta / / macskakörmök ("") közé van fogva. $html = "b félkövér szöveg / b a href=howdy.html kattints ide / a preg_match_all (" / (([\w]+)[^ ]* )(.*) (\ / \\2) /", $html, $matches); for ($i=0; $i count($matches[0]); $i++) {echo "passzolt: ".$matches[0][$i] ."\n"; echo "1. rész: ".$matches[1][$i] ."\n"; echo "2. rész: ".$matches[3][$i] ."\n"; echo "3. rész: ".$matches[4][$i] ."\n\n";}
passzolt: b félkövér szöveg / b 1. rész: b 2. rész: félkövér szöveg 3. rész: / b passzolt: a href=howdy.html kattints ide / a 1. rész: a href=howdy.html 2. rész: kattints ide 3. rész: / a
Lásd még: preg_match(), preg_replace(), és preg_split()!
Előző
Tartalom
Következő
Fel