Speciální znaky v preg_replace

Školení, která pořádám

V regulárním výrazu funkce preg_replace má řada znaků speciální význam. Tyto znaky se dají ošetřit funkcí preg_quote. Některé znaky mají speciální význam i v řetězci, kterým se má regulární výraz nahradit, a to sice zpětné lomítko a dolar. Pro náhradu těchto znaků žádná zvláštní funkce neexistuje, bohatě si ale vystačíme s obyčejnou addcslashes:

<?php
preg_replace($pattern, addcslashes($replacement, '\\$'), $subject);
?>

Tuto funkci mimochodem používám i v případě, kdy potřebuji vypsat text do JavaScriptového řetězce:

<?php
echo "el.innerHTML = '" . addcslashes($str, "\r\n'\\") . "'";
?>
Jakub Vrána, Výuka, 15.12.2006, diskuse: 4 (nové: 0)

Diskuse

ikona dgx:

ad JavaScript:
addcslashes($str, "\r\n'\\") === addslashes($str), ne?

ikona llook:

addcslashes($str, "'\"\\\0") === addslashes($str)

ikona dgx:

pravda, pravda, oddělovače řádků *slešuje* mysql_real_escape_string()

Mato:

Prosím Vás. Nevíte kde bych našel význam těch "speciálních znaků" ?. Napište prosím na mail. k.i.p@seznam.cz. Děkuji.

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.