Autor Zpráva
Vell Mell
Profil *
Potřeboval bych regulární výraz (pro preg_replace) na odstranění všech atributů z html tagů kromě atributů class="..." a id="..."

Zdroj. např.

<b class="b" onclick="alert('Jsem tučnej')">Tučňák</b>
<p id="p1">Nový odstavec</p>
<p id="p2" onclick="alert('Halló')">A ještě jeden další</p>

očekávám výsledek:

<b class="b">Tučňák</b>
<p id="p1">Nový odstavec</p>
<p id="p2">A ještě jeden další</p>

Už jsem bezradný, poradí mně někdo, díky....
Keeehi
Profil
Vell Mell:
No, toto není žádný malý problém. Předpokládám, že to má být kód, který má za úkol filtrovat nebezpečný uživatelský vstup. Je tedy nutné to udělat opravdu neprůstřelné. Validní XML (XHTML) by celkem ještě šlo, s validním HTML by to bylo mnohem horší, protože je benevolentnější. Problém je, že útočník se validitou vůbec zabývat nemusí (právě naopak) a může poslat takový vstup, který "regulár úplně zmate".
Jsem si celkem jistý, že HTML se nedá popsat regulární gramatikou. Možná bezkontextová, ale spíše kontextová. Bude tedy potřeba použít silnější kalibr než jeden obyčejný regulární výraz. Třeba github.com/nette/tokenizer/blob/master/readme.md

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: