我一直在寻找这个问题的解决方案,但我找到的每一个,并尝试不起作用。
我正试图从论坛主题中获取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;
}
答案 0 :(得分:2)
getElementById返回DOM节点对象。它不返回节点的HTML。为此,您必须获取节点的“innerHTML”。由于某些原因,PHP的dom对象没有正式支持这种情况,但可以使用以下答案伪造:How to get innerHTML of DOMNode?