2010-05-06 4 views
0

Je veux supprimer tout JavaScript à partir d'un petit fragment (4-6 lignes) de HTML, j'ai déjà lu ici qu'il est préférable de ne pas utiliser REGEX sur HTML , donc si quelqu'un connaît un meilleur moyen, s'il vous plaît aviser.Dénuder Javascript sur tout événement de Code utilisant PHP

Ainsi, par exemple, j'ai le code suivant:

<a href="go/to/my/link" onclick="fetchMeSomeData(this)">My Link</a> 
<p onfocus="doSomethingAmazing();"></p> 

Maintenant en PHP je veux remplacer le sur (ce que jamais l'événement est) événement avec juste un espace vide.

Répondre

1

J'ai construit une telle expression rationnelle il y a un certain temps, semble un peu effrayant si :). Voici une expression rationnelle pure, vous devrez peut-être également masquer des caractères spéciaux pour répondre à vos exigences linguistiques.

(\son[a-z]+\s*=\s*"[^"\\\r\n]*(?:\\.[^"\\\r\n]*)*"(?=[^<]*?>))|(\son[a-z]+\s*=\s*'[^'\\\r\n]*(?:\\.[^'\\\r\n]*)*'(?=[^<]*?>)) 

Voici la version masquée (selon les normes java), que vous devriez pouvoir utiliser comme une chaîne.

(\\son[a-z]+\\s*=\\s*\"[^\"\\\\\\r\\n]*(?:\\\\.[^\"\\\\\\r\\n]*)*\"(?=[^<]*?>))|(\\son[a-z]+\\s*=\\s*'[^'\\\\\\r\\n]*(?:\\\\.[^'\\\\\\r\\n]*)*'(?=[^<]*?>)) 

Il ne regarde que les balises et prend en compte les guillemets masqués dans les événements. Je suis sûr que ce n'est pas sûr à 100%.

2

Utilisez la bibliothèque HTML Purifier pour supprimer des éléments tels que JavaScript et les plugins du code. C'est bien mieux qu'une approche regex basée sur une liste noire car elle utilise un analyseur HTML complet et une liste blanche pour nettoyer le code HTML.

Questions connexes