我要修改<img src="">
格式不太畸形的 HTML 中的属性(WordPress 帖子)。我知道我可以采取简单的方法并使用正则表达式,但我担心穿着蓝色毛茸茸的衣服的人会在我睡梦中困扰我 https://meta.stackexchange.com/questions/67008/are-rumors-of-a-film-true-i-hope-so-by-golly/67041#67041.
如果我使用 DOM 解析器读取 HTML 并修改<img>
标签,恐怕我无法完全按照原样重建帖子(仅通过我的修改),因为 DOM 解析器可能会进行过多的清理工作,并且可能会删除必要的数据。 SAX 解析器可能无法处理无效的 XML,因此这也不起作用。
那么,有没有一种中间方法,我可以使用 DOM 解析器,但它知道每个元素从哪里开始,这样我就可以从那里进行字符串替换或类似的操作?我知道 DOM 树中的某些节点不会存在于源文档中(<b>Some <i>bizarre</b> formatting</i>
可能会触发这个),但这是否意味着它总是不可能的?我看到有一个DOMNode::getLineNo()功能 http://www.php.net/manual/en/domnode.getlineno.phpPHP 5.3 中添加的,但我使用的是 5.2.x。
如果 PHP 的 DOM 会写出“太干净”的结果,你could尝试基于字符串的简单HTMLDOM http://simplehtmldom.sourceforge.net/是否比较宽松。
然而,由于格式如您所显示的那样奇怪,我永远不会完全相信解析器能够“正确”地完成它。但尝试一下,也许它只是跳过这些东西。
DOM 库的DOMNode
类有一个getLineNo() http://php.net/manual/de/domnode.getlineno.php方法。不过,我并不完全明白这是如何工作的,因为它没有提供与之相配的偏移量。不确定这是否对您的用例有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)