Escapování neuzavřených hodnot HTML atributů

- vrana
- Člen | 131
Nette nevyžaduje používání XHTML, ale hodnoty atributů ošetřuje
správně pouze pokud jsou uzavřené do uvozovek nebo apostrofů.
<span title=x> je platný HTML kód, ale
<span title={$x}> Nette správně neošetří. Vidím v tom
jistý rozpor.
Tato syntaxe je povolená v XHP, které teď denně používám, a musím říct, že jsem si na ni celkem rychle zvykl a uvozovky považuji v této situaci už spíše za nadbytečné.
Implementoval jsem podporu pro toto ošetřování v branchi html-escape, tak to můžete vyzkoušet, otestovat a zkontrolovat. Zajímá mě, co na tuto syntaxi říkáte.
Poznámky:
<span title="{$x}">a<span title='{$x}'>samozřejmě nadále funguje.<span title=a{$x}b>nebo<span title={$x}{$y}>naopak nefunguje. To je stejné jako v XHP a v podstatě žádoucí.<span title={$x}>se přeloží na'<span title="' . htmlspecialchars($x) . '">'.

- juzna.cz
- Člen | 248
<span title=a{$x}b>nebo<span title={$x}{$y}>naopak nefunguje.
Tyto pripady by mohly zobrazit nejakou chybu, jako E_USER_NOTICE
nebo E_STRICT. Tudiz by to fungovalo kdyby to nekdo fakt chtel, ale
aspon by to cloveka upozornilo, ze neco dela spatne (coz je vlastne vyznam
E_NOTICE a E_STRICT).
Jinak skvela feature, hlavne to neukazujte klukum ze Zendu, ti by to asi nerozdychali :D

- vrana
- Člen | 131
juzna.cz napsal(a):
Tyto pripady by mohly zobrazit nejakou chybu, jako
E_USER_NOTICEneboE_STRICT. Tudiz by to fungovalo kdyby to nekdo fakt chtel, ale aspon by to cloveka upozornilo, ze neco dela spatne (coz je vlastne vyznamE_NOTICEaE_STRICT).
Souhlasím, ale dělat se mi to nechce. Podíváš se na to?

- David Grudl
- Nette Core | 8285
V současné implementaci je ještě ten problém, že nefunguje ani
<span title={$x} {$attrs}>
Kde $attrs je třeba title="ahoj".

- David Grudl
- Nette Core | 8285
Použil jsem nakonec implementaci, která jakoukoliv proměnnou uvnitř tagu při escapování obalí do uvozovek. Po zvážení všech okolností myslím, že to je nejvhodnější řešení.