【发布时间】:2011-09-08 09:45:58
【问题描述】:
我在一个类中有几个返回 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 一起正常工作?
这是我想要做的一个例子:
【问题讨论】:
-
根据您的示例,
DOMDocument可能是该工作的错误工具。如果您想要经过验证的输出,可以使用 XMLWriter。 XMLWriter 在 5.2 中可用。见php.net/manual/en/book.xmlwriter.php