php - 在使用 DOM 解析 HTML 时保持文件偏移量?

标签 php dom html-parsing

我要修改<img src="">不太畸形的 HTML 中的属性(WordPress 帖子)。我知道我可以采用简单的方法并使用正则表达式,但恐怕 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> 可能会触发它),但这是否意味着它总是不可能的?我看到有一个 DOMNode::getLineNo() function在 PHP 5.3 中添加,但我使用的是 5.2.x。

最佳答案

如果 PHP 的 DOM 会写出“太干净”的结果,您可以尝试基于字符串的 SimpleHTMLDOM是否更宽松。

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

DOM 库的 DOMNode 类有一个 getLineNo()方法。我不完全明白这是如何工作的,因为它没有提供与之相配的偏移量。不确定这是否对您的用例有帮助。

关于php - 在使用 DOM 解析 HTML 时保持文件偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155255/

相关文章:

python - 如何在python中解析html标签层次结构?

正则表达式与解析引擎

java - 如何解密 LTPA token 版本 2

php - 根据所选服务更新选择成员

javascript - 如何使用 JavaScript 在表单中动态添加日期?

javascript - 动态生成表格时使用按钮时AJAX函数触发一次但不会触发第二次

php - 如何在 PHP 中使用媒体查询?

php - 删除查询约束失败

javascript - Js,将参数传递给事件函数

python - 使用 python 请求解析 HTML