2012-01-02 4 views
1

私はこの質問の解決策を探しましたが、それぞれが見つけて、試行しません。別のページに表示するにはどうすればdivコンテンツを取得できますか?

フォーラムのトピックからdivのコンテンツを取得しようとしています。

私はするpreg_matchを使用して試したとだけ表示される "アレイ" は、私はこの方法

$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); 

を使用しようとした。これは、表示される "オブジェクト(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

検索するときにmsg_ が存在することを確かめていますか? $ id_msgの検索方法が壊れている可能性があります。 – Will

+0

うん、それは私がそれを表示しているページから、フォーラムで実際の投稿へのリンクを作成するためにそれを使用していた。 – SAFC

+0

何をしようとしていますか?なぜあなたは別のページにフォーラム投稿を表示する必要がありますか?同じドメインにあるのか、別のウェブサイトにあるのですか(コンテンツを削っていますか?) –

答えて

2

getElementByIdをはDOMノードオブジェクトを返します。ノードのHTMLは返されません。そのためには、ノードの「innerHTML」を取得する必要があります。これは何らかの理由でPHPのdomオブジェクトで正式にサポートされているわけではありませんが、この回答を使って偽装することができます:How to get innerHTML of DOMNode?

+0

http://www.php.net/manual/ro/class.domelement.php grep innerHTML – clyfe

+0

それは別の方法です。しかし、phpdomがjavascriptのように属性として 'node.innerHTML'を持っていたらうまくいくでしょう。 –

+0

この方法は、私が別のトピックから複数の投稿を取得できるようになるまで、ほぼ完全に機能しました。それは私に致命的なエラーを与えた致命的なエラー:DOMinnerHTML()を再宣言できません – SAFC

関連する問題