php代码加载http URL的页面源

时间:2015-10-26 19:17:19

标签: javascript php jquery html curl

我正在尝试找到将在我的屏幕上加载URL的源页面的PHP代码 - 实际上我正在尝试做更多但这是我想以干净可靠的方式实现的第一步。大多数帖子都说这已被多次询问和回复,但对我来说似乎没有任何可靠的工作,而且大多数帖子都很旧。最重要的是,我对PHP或任何网络编程都非常陌生。 无论如何,我确实找到了一些使用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中工作。有什么指示吗?

2 个答案:

答案 0 :(得分:1)

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

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

或将内容类型设置为text:

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

答案 1 :(得分:0)

您可以使用正确的HTML实体替换<>,以便源代码显示在屏幕上,而不是被浏览器解析为源代码:

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

echo htmlspecialchars($dom->saveHTML());哪个更干净......但上面至少可以让你一瞥htmlspecialchars实际上在做什么