0

可能重复:
如何使用 PHP 解析和处理 HTML?

我想检索网页的页眉和页脚(所有者知道这一点)并将其显示在新页面上,以便我可以添加不同的内容。该页面的结构非常好,其内容包含在 div 中,内容为 id,因此我想我可以执行以下操作:

使用 CURL 检索 html 将 html 提取到内容的任一侧 将其回显到新页面

我的问题是我不太精通 PHP,所以我不确定如何将两块 html 放在一边。我之前在 Java 中使用过 substring,但 PHP 中的 substr 似乎有点不同。任何人都可以提出替代方案吗?

谢谢

4

3 回答 3

2

子字符串和正则表达式不足以处理 HTML。最好(也更容易)使用 DOM 解析器。

看看DOMDocument。它支持加载 HTML,并允许您轻松遍历文档。

于 2012-10-22T16:47:40.433 回答
1

为了抓取网页,我使用了HTML DOM parser。这对你来说是最简单的方法。您可以在这篇文章中找到更多工具:如何使用 PHP 解析和处理 HTML?

于 2012-10-22T16:49:38.123 回答
0

前几天我做了非常相似的事情。我选择使用 jQuery、Ajax 和 PHP 来收集页面并将它们分解。我已经包含了我的代码的稀释版本。

对于 PHP,我使用了 CURL (get-url.php):

$requestURL = $_GET['url'];
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $requestURL);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl_handle, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl_handle, CURLOPT_DNS_USE_GLOBAL_CACHE, FALSE);
curl_setopt($curl_handle, CURLOPT_FORBID_REUSE, TRUE);
$content = curl_exec($curl_handle);
curl_close($curl_handle);
echo $content;

然后对于 Ajax,我使用了:

var url = /* URL you want to retrieve */;
$.ajax({
        url: "get-url.php?url=" + url,
        type: "GET",
        dataType: "html",
        cache: false,
        success: function(data, textStatus, jqXHR){
            var header = data.find('#header').html();
            var footer = data.find('#footer').html();
            $(header_DOM).html(header);
            $(footer_DOM).html(footer);
        }
    });

这只是一个指南。改变这个想法以满足您的需求。

于 2012-10-22T17:02:29.620 回答