我想修改格式不正确的HTML(WordPress帖子)中的<img src="">
属性。我知道我可以采取简单的方法并使用正则表达式,但我担心people in blue furry suits will come haunt me in my sleep。
如果我使用DOM解析器来读取HTML并修改<img>
标签,我恐怕无法完全重建帖子(仅使用我的修改),因为DOM解析器将可能做了太多的清理工作,可能会删除基本数据。 SAX解析器可能无法处理无效的XML,因此这也不起作用。
那么,是否有中间路径,我可以使用DOM解析器,但是知道每个元素的起始位置,所以我可以从那里做字符串替换或类似的东西?我知道DOM树中的一些节点不会存在于源文档中(<b>Some <i>bizarre</b> formatting</i>
可能会触发这个),但这是否意味着它总是不可能的?我看到PHP 5.3中添加了DOMNode::getLineNo()
function,但我使用的是5.2.x。
答案 0 :(得分:0)
如果PHP的DOM会写出“太干净”的结果,那么可以尝试基于字符串的SimpleHTMLDOM是否更宽松。
然而,由于格式化与您展示的一样奇怪,我永远不会完全信任解析器“正确”地执行它。但试试看,也许只是跳过这些东西。
DOM库的DOMNode
类具有getLineNo()
方法。我并不完全看到它是如何工作的,因为它没有提供偏移量。不确定这是否有助于您的使用案例。