en ligne Je trouve ce code regex utile ici tout en cherchant à analyser des attributs de balises HTML:RegEx pour extraire tous les attributs des balises HTML, y compris JavaScript
(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?
Il fonctionne très bien, mais il manque un élément clé que j'ai besoin. Certains attributs sont des déclencheurs d'événements qui ont en ligne le code Javascript dans les comme ceci:
onclick="doSomething(this, 'foo', 'bar');return false;"
Ou:
onclick='doSomething(this, "foo", "bar");return false;'
Je ne peux pas comprendre comment obtenir l'expression originale de ne pas compter les citations de la JS (simple ou double) alors qu'il est imbriqué dans l'ensemble des guillemets qui contiennent la valeur de l'attribut.
Je DEVRAIS ajouter que ceci n'est pas utilisé pour analyser un document HTML entier. Il est utilisé comme argument dans une ancienne fonction "tableau pour sélectionner le menu" que j'ai mise à jour. L'un des arguments est une balise qui peut ajouter des attributs HTML supplémentaires à l'élément de formulaire.
J'ai fait une fonction améliorée et déprécie l'ancien ... mais dans le cas où quelque part dans le code est un appel à l'ancienne fonction, j'en ai besoin pour les analyser dans le nouveau format de tableau. Exemple:
// Old Function
function create_form_element($array, $type, $selected="", $append_att="") { ... }
// Old Call
create_form_element($array, SELECT, $selected_value, "onchange=\"something(this, '444');\"");
La nouvelle version prend un tableau de paires attr => value pour créer des balises supplémentaires.
create_select($array, $selected_value, array('style' => 'width:250px;', 'onchange' => "doSomething('foo', 'bar')"));
Ceci est simplement un problème de compatibilité ascendante où tous les appels à la fonction VIEILLE sont acheminés vers le nouveau, mais l'argument append_att de $ dans l'ancienne fonction doit être transformé en un tableau pour le nouveau, d'où mon besoin d'utiliser regex pour analyser de petits extraits HTML. S'il y a une meilleure façon de faire cela, je suis ouvert aux suggestions.
ne Parse pas html avec ... -_- regex –
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –
C'est exactement pourquoi vous ne devriez pas analyser html avec regex. – Amarghosh