如何抓取div内容以显示在另一个页面中?

时间:2012-01-02 02:18:49

标签: php html preg-match

我一直在寻找这个问题的解决方案,但我找到的每一个,并尝试不起作用。

我正试图从论坛主题中获取div的内容。

我尝试过使用preg_match并且只显示“Array”然后我尝试使用此方法

$html = file_get_contents("http://www.lcs-server.co.uk/forum/index.php/topic,$id_topic");
$dom = new DOMDocument;
$dom->loadHTML($html);
$element = $dom->getElementById("msg_$id_msg");
var_dump($element);

这将显示“object(DOMElement)#1(0){}”

$ id_topic和$ id_msg在此代码之上定义,取自论坛数据库。我确实尝试从论坛数据库中获取消息,但它显示了BB代码标签,我希望它能抓取帖子内容,并以HTML格式显示,因为它显示在论坛帖子上。

这是我现在使用的代码,并给我“致命错误:无法重新声明DOMinnerHTML()”

$html = file_get_contents("http://www.lcs-server.co.uk/forum/index.php/topic,$id_topic");

$dom = new DOMDocument;
$dom->loadHTML($html);
$domelement = $dom->getElementById("msg_$id_msg");

foreach ($domelement as $element) 
{ 
    echo DOMinnerHTML($element); 
} 

function DOMinnerHTML($DOMelement) 
{ 
$innerHTML = ""; 
    $children = $DOMelement->childNodes; 
    foreach ($children as $child) 
    { 
            $tmp_dom = new DOMDocument(); 
        $tmp_dom->appendChild($tmp_dom->importNode($child, true)); 
        $innerHTML.=trim($tmp_dom->saveHTML()); 
    } 
        return $innerHTML; 
    }

1 个答案:

答案 0 :(得分:2)

getElementById返回DOM节点对象。它不返回节点的HTML。为此,您必须获取节点的“innerHTML”。由于某些原因,PHP的dom对象没有正式支持这种情况,但可以使用以下答案伪造:How to get innerHTML of DOMNode?