DOMDocument :: saveHTML ($ domnode) в PHP 5.2? - PullRequest
7 голосов
/ 04 июня 2011

У меня есть несколько функций в классе, которые возвращают saveHTML ().После того, как я отобразил более одной функции в классе saveHTML (), он повторяет некоторые HTML.Сначала я решил эту проблему, выполнив saveHTML ($ node), но сейчас это не представляется возможным.

Я не знал, что saveHTML ($ domnode) был доступен только в PHP 5.3.6, и у меня естьнет контроля над сервером, на который я загружал файлы, поэтому теперь я должен сделать его совместимым с PHP 5.2.

Для простоты и только для того, чтобы показать мою проблему, он выглядит примерно так:

<?php

class HTML
{
    private $dom;

    function __construct($dom)
    {
        $this->dom = $dom;
    }

    public function create_paragraph()
    {
        $p = $this->dom->createElement('p','Text 1.');

            $this->dom->appendChild($p);

        return $this->dom->saveHTML();
    }

    public function create_paragraph2()
    {
        $p = $this->dom->createElement('p','Text 2.');

            $this->dom->appendChild($p);

        return $this->dom->saveHTML();
    }
}

$dom = new DOMDocument;
$html = new HTML($dom);

?>
<html>
<body>
<?php

echo $html->create_paragraph();

echo $html->create_paragraph2();

?>
</body>
</html>

Выходы:

<html>
<body>
<p>Text 1.</p>
<p>Text 1.</p><p>Text 2.</p>
</body>

У меня есть идея, почему это происходит, но я понятия не имею, как не заставить это повториться без saveHTML ($ domnode).Как я могу заставить его работать должным образом с PHP 5.2?

Вот пример того, что я хочу сделать:

http://codepad.viper -7.com / o61DdJ

Ответы [ 2 ]

10 голосов
/ 04 июня 2011

Что я делаю, это просто сохраняю узел как XML. Есть несколько различий в синтаксисе, но он достаточно хорош для большинства применений:

return $dom->saveXml($node);
0 голосов
/ 18 октября 2013

У вас есть return $this->dom->saveHTML(); дважды в вашем классе (насколько я знаю, вам не нужно нигде возвращать его внутри класса, если это не частная функция.

Если вы возьмете return $this->dom->saveHTML(); из createparagraph(), оно будет echo без возврата. Насколько я знаю, это DOM, но я новичок в этом, как и ты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...