Částečné escapování HTML z DB

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
slawe
Člen | 11
+
0
-

Zdravím,
dočetl jsem se, že výchozí escapovaní lze nastavit ON/OFF. Jde však nějak nastavit tak, aby třeba ignoroval formátovací tagy a všechny ostatní escapoval? Díky

s4muel
Člen | 92
+
0
-

priamo asi nie,
ale custom helper by nemal byt problem napisat:
nieco taketo:

$template->registerHelper('customescape', function ($s) {
//spracujes $s podla potreby a vratis upraveny string...napr:
	return strip_tags($s, '<br><strong><b><em>...');
});

potom v latte

{$text|customescape}

pisal si vsak, ze chces escapovat a nie odstranit, takze ak nemozes/nechces pouzit strip_tags();
tak asi jedine htmlspecialchars($s) a potom replacnes

&lt;strong&gt; -> <strong>
&lt;/strong&gt; -> </strong>
...

pre vsetky tagy (na toto nie je potrebny custom helper, mozes pouzit aj zretazene helpery |replace() alebo |replaceRE(), ale bude to v zavislosti od poctu tagov asi trochu neprehladne)

pripadne si replacujes povolene tagy za nejake safe-placeholders (povedzme <strong>##strong## a </strong>##/strong##, potom pouzijes htmlspecialchars() a potom zase replacujes tie placeholdery naspat.