【发布时间】:2018-08-18 21:52:20
【问题描述】:
我想以编程方式修复多个垃圾 HTML 源。它们是 HTML 文件,具有多个相同类型的属性附加到元素,这在 HTML 中显然是不正确的。此类标签的示例:
<img alt=" " alt="Turtle" src="turtle.png" alt alt="Funny Turtle" alt="">
我想用这个标签做的是只留下第一个非空的alt属性(只有空格被认为是空的),像这样:
<img alt="Turtle" src="turtle.png">
如果只有空属性或纯空格属性,则该属性可以消失。
我正在考虑使用正则表达式来完成这项任务,但它似乎太容易出错了。避免从标记内部删除看起来像属性的文本并非易事。
更好的解决方案是 DOM 解析器,但我所看到的只是忽略重复的属性,使属性数组具有关联性,因此在这种情况下例如:
[
'alt' => ' ',
'src' => 'turtle.png',
]
如果只有解析器可以获取所有属性,像这样:
[
['name' => 'alt', 'value' => ' '],
['name' => 'alt', 'value' => 'Turtle'],
['name' => 'src', 'value' => 'turtle.png'],
['name' => 'alt', 'value' => null],
['name' => 'alt', 'value' => 'Funny Turtle'],
['name' => 'alt', 'value' => ''],
]
修复它会很容易。我只是去查找重复项,然后将节点上的属性设置为第一个值。
是否有任何 DOM 解析器获取所有属性,包括重复项?
【问题讨论】:
标签: php html html-parsing