【问题标题】:Modifying the contents of a HTML webpage on the fly in PHP在 PHP 中动态修改 HTML 网页的内容
【发布时间】:2011-02-08 09:16:05
【问题描述】:

我想加载一个 HTML 文档并在 PHP 中修改它的文本。例如,如果我有这样的文档:

<html>
<head><title>Test - Example.com</title></head>
<body>
<p><a href="http://www.example.com">Link number 1: Example.com</a></p>
<p>Link number 2: Example.com - some random text</p>
</body>
</html>

我想在第二段添加一个活动链接 ()。但我不想触及出现 Example.com 字符串的其他地方,例如第一段或文档的标题。所以我不能为此使用正则表达式,因为我需要考虑文档的结构。关于如何解决这个问题的任何想法?此外,我将收到的 HTML 文档可能是实时网页,因此它们可能包含错误、JavaScript 代码等。

【问题讨论】:

  • 要链接的段落的搜索条件是什么?我不确定,我理解你为什么不能使用正则表达式,当然 XPath 会是更好的选择,但是你说:页面可能包含错误/无效的 XML ...
  • 您正在寻找什么条件来确定什么成为链接,什么保持不变?
  • 我只想更改标准文本,不要触摸 HTML cmets、脚本、URL 等中包含的超链接或文本。

标签: php html dom html-parsing


【解决方案1】:

“正确”的方法是通过 PHP 的 DOM 对象,它可以导入 HTML,之后您可以使用 XPath 挖掘到您想要的确切链接。当然,DOM 对无效标记非常挑剔,并且会吐出浏览器可以很好地处理的非常简单的错误。在通过 DOM 来回传输内容之前,您可能需要修改输入以修复最严重的错误。

我发现的最糟糕的 stop-dead-in-DOM's-tracks 错误是有多个 html 和/或 body 块(例如,愚蠢的服务器在实际页面内容之前插入了一个独立的 块)。

【讨论】:

    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多