2012-10-28 14 views
5

Ich habe eine HTML-Datei Ich lade durch DOMDocument in dem ich einige DOM-Manipulationen die Ausgabe der HTML mit saveHTML.Verhindern DOMDocument leeren Leerzeichen nach leeren Tags

Das Problem ist, dass die weißen Flecken nach den Eingangs-Tags entfernt werden, hier ist die HTML-

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title></title> 
     <link rel="stylesheet" type="text/css" href="/style.css"> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
     <script> 
      window.jQuery || document.write(unescape('%3cscript src="/script/jquery.min.js"%3e%3c/script%3e')); 
     </script> 
    </head> 
    <body> 
     <div> 
<div> 
    <form method="post" action="/register/"> 
     <label>First name: <input type="text" name="firstname"></label> 
     <label>Last name: <input type="text" name="lastname"></label> 
     <label>Date of birth: <input type="date" name="dateofbirth"></label> 
     <label>Address: <input type="text" name="address"></label> 
     <label>Phone number: <input type="text" name="phonenumber"></label> 
     <label>Sex: <input type="text" name="sex"></label> 
     <label>Email address: <input type="email" name="email"></label> 
     <label>Account password: <input type="password" name="password"></label> 
     <input id="register-button" type="submit" value="Register"> 
     <input type="reset" value="Reset"> 
     <input type="button" value="Cancel"> 
    </form> 
</div> 
     </div> 
    </body> 
</html> 

PHP

$template_file = $_SERVER['DOCUMENT_ROOT']."/application/template/template.html"; 
$doc = new DOMDocument('1.0', 'utf-8'); 
$doc->loadHTMLFile($template_file); 
/* dom manipulation, importing and appending nodes from other documents etc */ 
echo $doc->saveHTML(); 

Es gestreifte die Whitespaces nach anderen Tags Ich habe versucht (<br>, <hr>) außer Tags in der .

Ich habe versucht, formatOutput auf True, aber nur die Leerzeichen vor einem schließenden Tag.

Gibt es eine Möglichkeit, DOMDocument die weißen Räume nach meinem <input> s zu erhalten?

+0

Die weißen Felder in ' ' oder ' ' übersetzen. Die brechungsfreien Räume werden nicht kollabiert. –

+1

@ JeremyJStarcher es ist nicht ausgeblendet, es wurde entfernt, auch ich war auf der Suche nach einer Lösung, die keine Änderung der Markup beinhaltet. – Musa

Antwort

4

Ich weiß, das ist ein altes Thema, und ich war für die gleiche Sache suchen, wenn ich auf diesen https://bugs.php.net/bug.php?id=50278 kam

In den Erläuterungen heißt es LIBXML_HTML_NODEFDTD als Option wie folgt weitergeben müssen:

$doc = new DOMDocument(); 

$doc->loadHTMLFile($file, LIBXML_HTML_NODEFDTD); 

echo $doc->saveHTML(); 

Damit bleibt der Leerraum erhalten.

+0

Danke für die Antwort, aber ich konnte das nicht zum Laufen bringen. Ich habe 'PHP Version 5.4.15' und' libxml2 Version 2.7.8'. Hast du es zur Arbeit gebracht? – Musa

+0

Ich denke, ich habe 5.6.x und was auch immer damit kam und es funktioniert für mich –