代码之家  ›  专栏  ›  技术社区  ›  Jan Fabry

在用dom解析html时保留文件偏移量?

  •  3
  • Jan Fabry  · 技术社区  · 15 年前

    我想修改 <img src=""> html(wordpress posts)中的属性格式不太错误。我知道我可以用简单的方法使用regex,但是我担心 people in blue furry suits will come haunt me in my sleep .

    如果我使用dom解析器读取html并修改 <img> 标记,我恐怕不能完全重建post(只需修改),因为do m解析器可能会做太多清理工作,可能会删除基本数据。sax解析器可能无法处理无效的xml,因此这也不起作用。

    那么,有没有中间的方法,我可以使用一个dom解析器,但是一个知道每个元素从哪里开始的解析器,这样我就可以从那里做字符串替换或类似的事情?我知道dom树中的一些节点在源文档中不存在( <b>Some <i>bizarre</b> formatting</i> 可能会触发这个),但这是否意味着它总是不可能的?我看到有一个 DOMNode::getLineNo() function 在php 5.3中添加,但我使用的是5.2.x。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Pekka    15 年前

    如果php的dom会写“太干净”的结果,那么 能够 尝试基于字符串 SimpleHTMLDOM 是否更宽容。

    然而,由于格式设置像您所展示的那样怪异,我永远不会完全相信解析器会“正确”地完成它。但试试看,也许它只是跳过了这些东西。

    dom库的 DOMNode 类有 getLineNo() 方法。但我不完全明白这是如何运作的,因为它并没有提供与之相适应的补偿。不确定这是否有助于您的用例。