ASCII olmayan bir karakter Damping zaman domBelgesi en Tutarsız Davranış açıklaması nedir?

1 Cevap php

PHP'nin DOMDocument 's saveXML() ve saveHTML() yöntemlerini kullanırken farklı "damping" davranışlarını fark ettik. İşte telif hakkı simgesi (©) damping basit bir örnektir.

<?
$domDoc = new DOMDocument();
$domDoc->loadHTML("&copy;");
echo $domDoc->saveHTML();
echo $domDoc->saveXML();
echo $domDoc->saveXML($domDoc);
?>

Üç döker üç farklı çıktıları üretmek:

The first outputs the string &copy;
The second outputs the character entity &#xA9;
The third outputs the UTF8 2-byte code for the copyright symbol (U+00A9)

Neden farklı çıktı? Kullanılan yöntem, öngörülebilirlik kontrolü için bir yolu var mı?

1 Cevap

Ben bir PHP uzmanı değilim, ama ilk ikisi için:

  • &copy; biri olduğu saveHTML (), HTML mevcut varlıklar kullanır
  • HTML kişiler mevcut olmayacaktır beri SaveXML () altıgen kodlamaları kullanacak

Üçüncü için, belgeleri bir düğümü sağlamak eğer verilen düğüm bir XML bildirimi (yani bir belge parçası gibi) olmadan yazıldığını söylüyor. Ben sadece bu durumda bir UTF-8 kodlamasını üstlenmeye karar olduğunu tahmin edebilirsiniz. Bu davranış belgelere belirgin değildir.