2012-10-28 6 views
5

Bazı DOM manipülasyonlarında saveHTML ile html çıkışı yaptığım DOMDocument aracılığıyla yüklediğim bir html dosyası var.DOMDocument öğesinin boş etiketlerden sonra beyaz boşlukların sıyrılmasını önleme

sorun burada, giriş etiketleri sonra beyaz boşlukların kaldırıldığı olmasıdır 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(); 

Ben denedim diğer etiketler (<br> sonra gelen boşluklara çizgili, <hr> olduğunu) <head>'daki etiketler hariç.

formatOutput'u true olarak ayarlamayı denedim, ancak bu yalnızca boşlukları bir kapanış etiketinden önce sakladı.

DOMDocument, <input> s sayfamdan sonra beyaz alanları koruyabilmenin bir yolu var mı?

+0

Beyaz boşlukları   veya   'dır. Kırılmayan alanlar çökmez. –

+1

@JeremyJStarcher kaldırılmış değil, aynı zamanda biçimlendirme değiştirmeyi içermeyen bir çözüm arıyordum. – Musa

cevap

4

Bu eski bir konudur biliyorum ve böyle bir seçenek olarak LIBXML_HTML_NODEFDTD geçmek diyor notlarda bu https://bugs.php.net/bug.php?id=50278

rastladım ben aynı şeyi arıyordu:

$doc = new DOMDocument(); 

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

echo $doc->saveHTML(); 

Bu beyaz alanı koruyacaktır.

+0

Yanıt için teşekkürler, ancak bunu işe alamadım. PHP Sürüm 5.4.15 ve libxml2 Sürüm 2.7.8 var. Onu işe aldın mı? – Musa

+0

Sanırım 5.6.x'im var ve onunla ne olduysa ve benim için çalışıyor –