Autor | Zpráva | ||
---|---|---|---|
CarlosK Profil * |
#1 · Zasláno: 17. 2. 2012, 22:33:01
Dobrý den, mám script, který odstraní závorky (<TEXT> => TEXT) a chci aby se výsledek escapoval.
$text = preg_replace('/\<([a-zA-Z])\>/e', htmlspecialchars('${1}'), $text); Vše funguje jak má, jen výsledek se neescapuje, nevíte proč? Děkuji všem za rady. |
||
TomasJ Profil |
já bych to udělal takto:
$text = preg_replace('/<([a-zA-Z]*)>/e', htmlspecialchars('$1'), $text); $text = preg_replace('/<(.*)>/e', htmlspecialchars('$1'), $text); |
||
Tori Profil |
CarlosK:
$text = preg_replace('/\<([^>]*)\>/e', 'htmlspecialchars("$1")', $text); Trochu jsem změnila regulár, na a-zA-Z není co escapovat.
|
||
TomasJ Profil |
#4 · Zasláno: 17. 2. 2012, 23:34:15
Proč všichni v regulárech escapují znaky < a > ??? Vždyť to se přece escapovat nemusí ne?
|
||
Tori Profil |
TomasJ:
Záleží, kde se to použije, dost věcí (podvýrazy apod.) začíná (?< Nicméně je i funkce preg_quote, která escapuje všechno možné včetně <>, takže autoři to zřejmě považovali za jistější. Konkrétně tady to ale nezbytné nebylo, to máte pravdu.
|
||
TomasJ Profil |
#6 · Zasláno: 17. 2. 2012, 23:47:58
Aha, díky za upřesnění.
|
||
CarlosK Profil * |
#7 · Zasláno: 18. 2. 2012, 00:41:38
Děkuji za odpovědi. Měl bych ještě jednu otázku. Dá se pomocí regulárních výrazů dosáhnou toho, aby při zadání např.:
<test><ahoj>dobrý den</ahoj></test> regulární výrazy vrátily pomocí preg_match_all toto: 0 => //Celý skript array 0 => string '<test><ahoj>dobrý den</ahoj></test>' 1 => string '<ahoj>dobrý den</ahoj>' 1 => //Název tagu array 0 => string 'test' 1 => string 'ahoj' 2 => //Obsah tagu array 0 => string '<ahoj>dobrý den</ahoj>' 1 => string 'dobrý den' Skoušel jsem něco napsat sám, ale nefunguje to jak má: '/<([a-zA-Z]*)><(.*)><\/[a-zA-Z]*>/'. |
||
Časová prodleva: 13 let
|
0