我有以下可能的字符串,我需要转换成数组,以便我可以将它们提供给一个html生成器。我并不盯着html或XML,我正在尝试创建一个速记,这将允许我使用更易读的代码更简单,更快速地填充我的html对象。
id='moo' id = "foo" type= doo value ='do\"o' on_click='monkeys("bobo")'
我需要提取attribs及其相应的值。这些attrib字符串与html或xml标记无关。我想用1到3个正则表达式
来做最终结果应如下所示:
array(1) { [id] => moo } array(3) { [id] => foo [type] => doo [value] => do"o } array(1) { [on_click] => monkeys("bobo") }
但如果结果如下:
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") }
我可以从那里重新安排。
我尝试使用的一些以前的正则表达式及其问题:
/[\s]+/
- 仅当= /(?<==)(\".*\"|'.*'|.*)$/
- 返回包含封装引号的值。虽然/^[^=]*/
- 返回属性就好了。无论attrib和= 答案 0 :(得分:1)
你想在这里特别使用正则表达式的任何特殊原因?看起来像基于令牌的解析器可能对你更好,因为你需要保持更多的状态,而不是在正则表达式中做得舒服。
答案 1 :(得分:0)
泰森
您似乎已经完成了一些解析以删除XML / HTML元素,现在正在尝试处理剩余的属性。通常,正则表达式不足以解析XML / HTML。
如果您可以访问XML / HTML,则应考虑使用PHP的DOM处理库/扩展来读取XML / HTML,并迭代/解析元素和属性。
以下是一个示例参考: