Как я могу получить содержимое Div для отображения на другой странице? - PullRequest
1 голос
/ 02 января 2012

Я искал решения для этого вопроса, но каждый, который я нашел, и попытка не работает.

Я пытаюсь получить содержимое 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; 
    }

1 Ответ

2 голосов
/ 02 января 2012

getElementById возвращает объект узла DOM.Он не возвращает HTML узла.Для этого вам нужно получить "innerHTML" узла.Это должным образом официально не поддерживается объектом dom в PHP по какой-то причине, но может быть подделано с помощью этого ответа: Как получить innerHTML из DOMNode?

...