preg_replace
(PHP 4, PHP 5)
preg_replace — Reguláris kifejezés alapján keres és cserél
LeÃrás
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.
Example#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
Example#2 Az /e módosÃtót használata:
preg_replace ("/(<\/?)(\w+)([^>]*>)/e",
"'\\1'.strtoupper('\\2').'\\3'",
$html_body);
Ez az összes HTML elemet nagybetűsre cseréli a bemeneti szövegben.
Example#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);
Note: 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()!