2009-11-24 7 views
1

J'essaie de faire correspondre une chaîne qui contient du code HTML contenant des paramètres à une fonction en Javascript.preg_match_all Problèmes

Il existe plusieurs de ces fonctions dans la chaîne contenant le code HTML.

changeImg('location','size'); 

Disons que je veux saisir l'emplacement dans les guillemets simples, comment j'irais faire cela? Il y a plus d'une instance dans la chaîne.

Merci d'avance.

+0

Y a-t-il déjà des guillemets simples échappés dans la chaîne? Par exemple, «La maison de son chien»? Sinon, cela devrait être simple. Si c'est le cas, nous allons nous amuser. – Dereleased

+0

Code HTML ....? – miku

Répondre

3

Il s'agit d'une question assez courante sur SO et la réponse est toujours la même: les expressions régulières sont un outil médiocre pour analyser le langage HTML. Utilisez un analyseur XML ou HTML. C'est ce qu'ils sont pour. Jetez un oeil à Parse HTML With PHP And DOM pour un exemple et Parsing Html The Cthulhu Way pour un peu d'arrière-plan.

Parsing Javascript est encore plus difficile car il peut apparaître à l'intérieur <script> tags et attributs donc au moins vous auriez besoin d'obtenir chaque tag <script> et analyser le contenu ainsi que chaque élément et analyser leurs gestionnaires d'événements (onclick, etc).

Je me rappelle this quote:

« Certaines personnes, lorsqu'ils sont confrontés à un problème , pensez « Je sais, je vais utiliser expressions régulières. » Maintenant, ils ont deux problèmes. » - Jamie Zawinski

+0

Techniquement, ce n'est pas la citation rigoureuse ... mais bon. J'ai oublié où j'ai lu que c'est une citation erronée. – RCIX

+0

@RCIX: voici la vraie source http://regex.info/blog/2006-09-15/247 – cletus

+0

Aussi: "Si tout ce que vous avez est un marteau, tout ressemble à un clou" anonygrammer. – Don