PHP kézikönyv
Előző |  | Következő

# preg_replace

(PHP 3 >= 3.0.9, PHP 4, PHP 5)

preg_replace -- Reguláris kifejezés alapján keres és cserél

## Leírás

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )

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");

Ennek a példának a végeredménye:

    $kezdoDatum = 5/27/1999

Példa 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.

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ő
preg_replace_callback | Fel | preg_split