2011-08-20 18 views
8

'da html varlık kodlamasını devre dışı bırak DOMDocument öğesinin bu karakterleri karışmadan nasıl durduracağını anlayamıyorum.PHP DOMDocument

<?php 

$doc = new DOMDocument(); 
$doc->substituteEntities = false; 
$doc->loadHTML('<p>¯\(°_o)/¯</p>'); 
print_r($doc->saveHTML()); 

?> 

Beklenen Çıktı: ¯ (_O °)/¯

Gerçek Çıktı: Â ¯ (Â ° _o)/Â ¯

http://codepad.org/W83eHSsT

+0

Bir HTML belgesinde neden bu anlamsızlığı istersiniz? –

+0

Her neyse, editörünüz/dosya aktarım programınız/PHP kodunun Unicode olmaması gerçeği, "DOMDocument" in herhangi bir problemi olduğundan "onları" karıştırıyor. –

+0

Cevabı burada buldum: http://stackoverflow.com/questions/2142120/php-encoding-with-domdocument/2671410#2671410 Sadece mb_convert_encoding kullanın ($ string, 'html-entities', 'utf-8'); – anonymous

cevap

3

buldum bir http://php.net/manual/en/domdocument.loadhtml.php

adresindeki yorumlarda ipucu

(gmail nokta com < mdmitry gelen Comment > 21-Aralık-2009 05:02: "Ayrıca UTF-8 bu basit kesmek kullanarak olarak HTML yükleyebilirsiniz:")

Sadece HTML- önce '<?xml encoding="UTF-8">' eklemek girişi:

$doc = new DOMDocument(); 
//$doc->substituteEntities = false; 
$doc->loadHTML('<?xml encoding="UTF-8">' . '<p>¯\(°_o)/¯</p>'); 
print_r($doc->saveHTML()); 
+1

Çalışmıyor. Bu sayfada zaten her şeyi denedim. http://codepad.org/Sr3d710Q – anonymous

+0

Benim için çalışıyor. PHP dosyaları için UTF-8 kullanma - Bunu test ettim. Bilmiyorum, Codepad dahili olarak ne yapıyor, ama geri dönen varlıklar… – feeela

2
<?xml version="1.0" encoding="utf-8"> 

belgenin üst SaveXML ve saveHTML ikisi için etiketleri çaresine .. sürer.

İlgili konular