【问题标题】:php code to load page source of http URLphp代码加载http URL的页面源
【发布时间】:2016-01-26 00:43:32
【问题描述】:

我正在尝试查找将在我的屏幕上加载 URL 的源页面的 PHP 代码 - 实际上我正在尝试做更多的事情,但这是我想要以干净可靠的方式实现的第一步。大多数帖子都说这已经被问过并回答了好几次,但对我来说似乎没有什么能可靠地工作,而且大多数帖子都是旧的。最重要的是,我对 PHP 或任何 Web 编程都非常陌生。 无论如何,我确实找到了一些使用 cURL、DOM 或直接函数的代码,这些代码有效但对 PHP 版本非常敏感。 PHP 5.2、5.3、5.5 和 5.6 是我的托管服务提供的版本。 在某些版本中工作的那些,加载(显示)URL页面本身或以没有图像的“项目符号”方式 - 但是当我们在任何网页上执行“查看页面源代码”时,没有任何东西看起来像html文档.所以我的问题是这根本不可能,还是我在这里遗漏了什么?与页面相呼应但不是源代码的 DOM 代码之一,也仅在 5.2 和 5.5 中是:

<?php
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile('http://www.cisco.com/');
echo $dom->saveHTML();
?>

我的另一个重要需求是我的 PHP 代码至少现在可以在 5.3 中工作,但如果可能的话,我希望 em 在 5.2 到 5.5 中工作。请大家指点一下?

【问题讨论】:

  • “这将在我的屏幕上加载 URL 的源页面”到底是什么意思?从另一个页面检索源代码并将其 HTML 检索到浏览器?渲染它的图像? ...?
  • 你正在转储 html - 你的浏览器将呈现它,除非你告诉它 NOT 到例如echo htmlspecialchars($dom-&gt;saveHTML());header('Content-type: text/plain); $dom-&gt;saveHTML();
  • @fjc,例如:在 www.cisco.com 的网页上,如果你做一个“查看源页面”,你会在新的浏览器中得到它的源 html 文档。
  • 感谢@Marc B,知道为什么您和所有其他解决方案在 PHP 5.2 和 5.5 中提供输出,但在 5.3 和 5.6 中提供空白输出?我需要他们至少在 5.3 中工作。
  • 本可以使用某人的一些回应,为什么所有代码​​似乎在 PHP 5.2 和 5.5 中都可以工作,但在 5.3 和 5.6 中却不行...

标签: javascript php jquery html curl


【解决方案1】:

问题在于,当您回显 HTML 时,浏览器会将其解释为 HTML。如果您想将其视为“源”,则需要转义 HTML:

echo htmlspecialchars($dom->saveHTML());

或将内容类型设置为文本:

header("Content-Type:text/plain");
echo $dom->saveHTML();

【讨论】:

  • 谢谢,代码和您的行在 PHP 5.2 和 5.5 中工作,但在 5.3 和 5.6 中是空白页 - 知道为什么吗?
【解决方案2】:

您可以将&lt;&gt; 替换为适当的HTML 实体,以便源将显示在屏幕上,而不是被浏览器解析为源:

echo str_replace('>', '&gt;', str_replace('<', '&lt;', $dom->saveHTML()));

或者echo htmlspecialchars($dom-&gt;saveHTML()); 更简洁......但以上内容至少让您了解 htmlspecialchars 实际在做什么

【讨论】:

  • 谢谢,我看不出你提到的两者的输出有什么不同??但是知道为什么它们在 php 5.2 和 5.5 中工作而不是在 5.3 和 5.6 中工作吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
相关资源
最近更新 更多