J'ai les chaînes possibles suivantes que je dois transformer en tableaux afin que je puisse les nourrir dans un générateur html. Je ne suis pas en train de regarder le HTML ou le XML, j'essaye de créer un raccourci qui me permettra de remplir mes objets html plus facilement et plus rapidement avec un code plus lisible.regex pour extraire les noms et les valeurs des attributs
id='moo' id = "foo" type= doo value ='do\"o' on_click='monkeys("bobo")'
J'ai besoin de retirer les attribs et leurs valeurs correspondantes. Ces chaînes d'attributs ne sont pas associées à une balise html ou xml. Et je voudrais le faire avec 1 à 3 expressions régulières
- La valeur peut être encapsulé soit par des guillemets simples ou doubles
- Si la valeur est encapsulée par des guillemets, il peut également contenir des espaces, des citations différentes à partir de guillemets encapsulés ou de guillemets échappés qui sont identiques aux guillemets encapsulés.
- Il peut y avoir ou non des espaces entre les valeurs attrib et =, et = et.
Les résultats éventuels devraient ressembler à:
array(1) { [id] => moo } array(3) { [id] => foo [type] => doo [value] => do"o } array(1) { [on_click] => monkeys("bobo") }
mais si elle se révèle comme:
array(2) { [0] => id [1] => moo } array(6) { [0] => id [1] => moo [2] => class [3] => foo [4] => value [5] => do"o } array(2) { [0] => on_click [1] => monkeys("bobo") }
je peux réarranger à partir de là.
Quelques regexes précédents, j'ai essayé d'utiliser et de leurs problèmes:
/[\s]+/
- Retour paires attrib/valeur que s'il n'y avait pas d'espace autour des =/(?<==)(\".*\"|'.*'|.*)$/
- Retourne la valeur, y compris les citations encapsulant. Il ignore les guillemets échappés dans la valeur./^[^=]*/
- Retourne l'attribut très bien. indépendamment des espaces entre attrib et =
grâce à #regex pour moi d'obtenir au moins loin! –
Nous avons besoin d'un site d'échange de pile dédié aux questions regex. Sérieusement. – webbiedave
@web: http://area51.stackexchange.com/proposals/2203/regex – kennytm