Je suis en train de faire correspondre les attributs d'une balise html, mais je ne peux pas le faire fonctionner :)PHP regex backreference
Prenons cette balise par exemple:
<a href="ddd" class='sw ' w'>
Il est évident que la dernière partie n'est pas tout à fait raison.
Maintenant, j'essayé de faire correspondre les attributs partie avec ce morceau de code:
preg_match('/(\s+\w+=(?P<quote>(\'|\"))[^(?P=quote)]*(?P=quote))*/U', " href=\"bla\" class='sw'sw'", $a);
$ Voici un est vide, et c'est ce que je pense. Mais si je prends maintenant mon expression complète correspondent à la dernière partie de la classe, ce qui me laisse perplexe. Il ressemble à ceci:
preg_match('/<(?P<c>[\/]?)(?P<tag>\w+)(?P<atts>(\s+\w+=(?P<quote>(\'|\"))[^(?P=quote)]*(?P=quote))*)\s*(?P<sc>[\/]?)>/U', $tag, $a);
maintenant $ un rendement:
Array
(
[0] => <a href="ddd" class='sw ' w'>
[c] =>
[1] =>
[tag] => a
[2] => a
[atts] => href="ddd" class='sw ' w'
[3] => href="ddd" class='sw ' w'
[4] => class='sw ' w'
[quote] => '
[5] => '
[6] => '
[sc] =>
[7] =>
)
Avis sur la touche 4 qui contient la partie de la classe, y compris la dernière « w, alors que je l'ai fait utiliser la carte (U) Interrupteur ngreedy à la fin.
Des indices?
Je sais, mais je corrige un exis bibliothèque de ting. – acidtv
Tenter de réparer une mauvaise pratique est en soi une mauvaise pratique. Au lieu d'essayer de réparer l'expression, remplacez-la par un gestionnaire DOM - vous obtiendrez vos données et il y a de fortes chances qu'elles ne se brisent pas avec les variances dans les balises qui y sont ajoutées. – squeeks
hmm ok, je vais y jeter un coup d'oeil. – acidtv