Tengo varias funciones en una clase que devuelve saveHTML(). Después de repetir más de una función en la clase saveHTML(), repite parte del HTML. Inicialmente resolví esto haciendo saveHTML ($ node) pero eso no parece ser una opción ahora.
No sabía saveHTML ($ domnode) solo estaba disponible en PHP 5.3.6 y no tengo control sobre el servidor al que subí los archivos, así que ahora tengo que hacerlo compatible con PHP 5.2.
Por razones de simplicidad y sólo para mostrar mi problema que es similar a esto:
<?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>
Salidas:
<html>
<body>
<p>Text 1.</p>
<p>Text 1.</p><p>Text 2.</p>
</body>
Tengo una idea por qué está sucediendo, pero no tengo ni idea cómo no hacer que se repita sin guardarHTML ($ domnode). ¿Cómo puedo hacer que funcione correctamente con PHP 5.2?
He aquí un ejemplo de lo que quiero ser capaz de hacer:
http://codepad.viper-7.com/o61DdJ
sobre la base de su ejemplo, 'DOMDocument' puede ser una herramienta incorrecta para el j transmisión exterior. Si quieres resultados validados, puedes usar XMLWriter. XMLWriter está disponible en 5.2. Ver http://www.php.net/manual/en/book.xmlwriter.php – jmz