PHP kézikönyv
Előző
Következő
A subject -ben megadott szövegben keres a pattern paraméterben megadott mintára illeszkedő részeket és azokat lecseréli a replacement -ben megadott kifejezésre.
Ha a limit is szerepel, akkor csak az első limit számú illeszkedő részt cseréli le.
Ha limit hiányzik vagy értéke -1, akkor minden illeszkedő részt cserél.
A replacement -ben hivatkozásokat is el lehet helyezni\\ n vagy - PHP 4.0.4-től kezdve - $n alakban. (Ez utóbbit részesítsd előnyben.) Minden ilyen hivatkozás az n. zárójelezett részminta által megtalált szöveggel lesz helyettesítve.
Az n értéke 0-tól 99-ig terjedhet, ahol is a \\0 vagy $0 hivatkozás a teljes mintára illeszkedő szöveget jelenti.
A kerek nyitó zárójelek 1-től kezdve balról jobbra vannak számozva és az általuk bevezetett "gyűjtő" részminták sorszámát adják.
Ha volt egyezés, akkor az új subject -tel tér vissza a függvény, egyébként a változatlanul hagyott, eredeti subject -tel.
A limit -től eltekintve minden, preg_replace() -nek átadott paraméter lehet tömb is.
Ha subject tömb típusú, akkor a keresés és a helyettesítés a tömb minden elemén végrehajtódik, és a visszatérési érték is tömb lesz.
Ha a pattern és replacement paraméterek tömb típusúak, akkor a preg_replace() veszi a tömbök elemeit és mindegyikkel páronként elvégzi a keresést és a helyettesítést a subject szövegen.
Ha a replacement tömbnek a pattern tömbnél a kevesebb eleme van, akkor a pár nélküli mintákat üres sztringgel fogja helyettesíteni.
Ha a pattern tömb és replacement sztring típusú, akkor ezt a helyettesítési szöveget használja minden pattern -beli mintához.
A fordított esetnek nem lenne sok értelme.
Az / e módosító hatására a preg_replace() a replacement paramétert PHP kódként értelmezi, miután a hivatkozások behelyettesítését elvégezte.
Jó tanácsként: érdemes megbizonyosodni arról, hogy replacement érvényes PHP kódot tartalmaz (sztringben megadva), másképp a PHP szintaktikai hibát (Parse Error) fog jelezni abban a sorban, ahol a preg_replace() függvényt meghívtad.
Példa 1.
Néhány érték cseréje
$mintak = array ("/ (19|20)(\d{2}) -(\d{1,2}) -(\d{1,2}) /", "/ ^\s*{(\w+)}\s*= / "); $csere = array ("\\3 / \\4 / \\1\\2", "$\\1 ="); print preg_replace ($mintak, $csere, "{kezdoDatum} = 1999-5-27");
$kezdoDatum = 5 / 27 / 1999
Példa 2.
Az / e módosítót használata:
Ez az összes HTML elemet nagybetűsre cseréli a bemeneti szövegben.
Példa 3.
HTML-ből sima szöveggé konvertálás
/ / A $dokumentum HTML formátumú. / / Minden HTML elemet, javascript szakaszt és térközt eltávolít a / / dokumentumból.
Ezenkívül néhány megszokott HTML entitást is a / / sima, karakteres megfelelőikre konvertál. $mit = array ("'script[^ ]*? .*? / script 'si", / / javascript eltüntetése"' [\ /\ !]* ?[^ ]*? 'si", / / HTML elemek eltüntetése "'([\r\n])[\s]+'", / / térközök "'(quot|#34) ;'i", / / HTML entitások"' (amp|#38) ;'i", "'(lt|#60) ;'i","' (gt|#62) ;'i", "'(nbsp|#160) ;'i","' (iexcl|#161) ;'i", "'(cent|#162) ;'i","' (pound|#163) ;'i", "'(copy|#169) ;'i","' #(\d+) ;'e"); / / PHP kódként értelmezze $mire = array ("", "", "\\1", "\"", "", "", "", "", chr(161), chr(162), chr(163), chr(169), "chr(\\1)"); $szoveg = preg_replace ($mit, $mire, $dokumentum);
Megjegyzés:
A limit paraméter a PHP 4.0.1pl2 után került a nyelvbe.
Lásd még: preg_match(), preg_match_all() és preg_split()!
Előző
Tartalom
Következő
Fel