Saya telah mencoba untuk mengurai kode HTML5 sehingga saya dapat mengatur atribut / nilai dalam kode, tetapi tampaknya DOMDocument (PHP5.3) tidak mendukung tag like <nav>
dan <section>
.
Apakah ada cara untuk mengurai ini sebagai HTML di PHP dan memanipulasi kode?
Kode untuk direproduksi:
<?php
$dom = new DOMDocument();
$dom->loadHTML("<!DOCTYPE HTML>
<html><head><title>test</title></head>
<body>
<nav>
<ul>
<li>first
<li>second
</ul>
</nav>
<section>
...
</section>
</body>
</html>");
Kesalahan
Peringatan: DOMDocument :: loadHTML (): Tag nav tidak valid di Entity, baris: 4 di /home/wbkrnl/public_html/new-mvc/1.php di baris 17
Peringatan: DOMDocument :: loadHTML (): Bagian tag tidak valid di Entitas, baris: 10 di /home/wbkrnl/public_html/new-mvc/1.php di baris 17
php
html
domdocument
Klaas Sangers
sumber
sumber
loadHTML($HTML5)
mengembalikan FALSE (gagal)! Saya perlu mengubah tag baru menjadi DIV ... Ini bukan hanya masalah "peringatan" di layar saya.Jawaban:
Tidak, tidak ada cara untuk menentukan doctype tertentu untuk digunakan, atau untuk memodifikasi persyaratan yang sudah ada.
Solusi terbaik Anda yang bisa diterapkan adalah menonaktifkan pelaporan kesalahan dengan
libxml_use_internal_errors
:sumber
loadHTML($HTML5)
mengembalikan FALSE (gagal)! Saya perlu mengubah tag baru menjadi DIV ...loadHTML
sekarang sebenarnya menerima tag HTML5.Anda juga bisa melakukannya
sumber
@
ataulibxml_*
)Anda dapat memfilter kesalahan yang Anda dapatkan dari parser. Sesuai jawaban lain di sini, matikan pelaporan kesalahan ke layar, lalu ulangi melalui kesalahan dan hanya tampilkan yang Anda inginkan:
Berikut adalah
print_r()
satu kesalahan:Dengan mencocokkan pada
message
dan / ataucode
, ini dapat disaring dengan mudah.sumber
Tampaknya tidak ada cara untuk mematikan peringatan tetapi tidak ada kesalahan. PHP memiliki konstanta yang seharusnya melakukan ini, tetapi tampaknya tidak berfungsi. Inilah yang HARUS berhasil, tetapi tidak karena (bug?) ....
http://php.net/manual/en/libxml.constants.php
sumber
Ini berhasil untuk saya:
Jika Anda membutuhkan tag header, ubah header dengan tag div dan gunakan id. Misalnya:
Ini bukan solusi terbaik tetapi tergantung pada situasinya, ini dapat berguna.
Semoga berhasil.
sumber
Tag HTML5 hampir selalu menggunakan atribut seperti id, class, dan sebagainya. Jadi kode untuk menggantinya adalah:
sumber