HTML varlıkları vs DOMDocument :: loadXML

4 Cevap php

Şu anda XML ayrıştırıcı gibi XHTML okuyarak bir sorun, böylece HTML karakter tanımıyor var:

<?php
$text = <<<EOF
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Entities are Causing Me Problems</title>
  </head>
  <body>
    <p>Copyright &copy; 2010 Some Bloke</p>
  </body>
</html>
EOF;

$imp = new DOMImplementation ();
$html5 = $imp->createDocumentType ('html', '', '');
$doc = $imp->createDocument ('http://www.w3.org/1999/xhtml', 'html', $html5);

$doc->loadXML ($text);

header ('Content-Type: application/xhtml+xml; charset: utf-8');
echo $doc->saveXML ();

Sonuçlar:

Warning: DOMDocument :: loadXML () [domdocument.loadxml]: Varlık, çizgi tanımlı değil İdarenin 'kopya': testing.php on line 19 8 < / code>

Kendimi XHTML5 olarak sayfalarını hizmet verirken bunu nasıl düzeltebilirim?

4 Cevap

XHTML5 bir DTD'ye sahip değildir, bu nedenle adında kişiler bu dil için ne çözümleyici anlatmak için herhangi bir belge türü tanımı olduğu gibi, içinde kişiler adlı eski okul HTML kullanamazsınız. (Önceden tanımlanmış XML kişiler hariç &lt;, &amp;, &quot; ve &gt; ... ve &apos;, genellikle o) kullanmak istemiyorum ama.

Bunun yerine bir sayısal karakter başvurusu (&#169;) veya daha iyi kullanmak sadece düz şifresiz UTF-8 © karakter (, <meta> elemanı için eklemeyi unutmayın ) olmayan XML ayrıştırıcıları ayarlanmış karakter anlamına gelir.

Bunun yerine, DOMDocument::loadHTML() kullanmayı deneyin. Bu kusurlu biçimlendirme boğulursun değildir.

Hy cdata ile deneyin

$text = <<<EOF
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Entities are Causing Me Problems</title>
  </head>
  <body>
    <![CDATA[<p>Copyright &copy; 2010 Some Bloke</p>]]>
  </body>
</html>
EOF;

Bir html belgenin üst kısmında loadXML ve SaveXML kullanımı ve eklemek gerekir etiketi

<?xml.

Bunun yerine loadHTML ve saveHTML kullanın ve eklemek

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">