Mengapakah DOMDocument::loadHTML Membuang Ralat Mengenai Tanda Sebut Harga yang Hilang?

Mary-Kate Olsen
Lepaskan: 2024-10-25 04:18:29
asal
894 orang telah melayarinya

Why Does DOMDocument::loadHTML Throw Errors About Missing Quotation Marks?

Mengurangkan Ralat DOMDocument LoadHTML: Menyelesaikan Tanda Sebut Harga Melampirkan

Apabila cuba memuatkan kandungan HTML ke dalam DOMDocument, anda mungkin menghadapi amaran dan membawa maut ralat yang berkaitan dengan tanda petikan penutup yang hilang dalam rujukan entiti. Untuk menyelesaikan masalah ini, mari kita teliti kod yang disediakan:

$html = file_get_contents("http://www.somesite.com/");

$dom = new DOMDocument();
$dom->loadHTML($html);

echo $dom;
Salin selepas log masuk

Kod ini cuba mengambil kandungan HTML daripada tapak web, memuatkannya ke dalam DOMDocument dan menggemakan dokumen yang terhasil. Walau bagaimanapun, ia memberikan amaran dan ralat maut berikut:

Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity,
Catchable fatal error: Object of class DOMDocument could not be converted to string in test.php on line 10
Salin selepas log masuk

Amaran menunjukkan bahawa kandungan HTML mengandungi rujukan entiti yang tidak mempunyai tanda petikan penutup yang betul. Untuk menyelesaikan masalah ini, kami boleh menggunakan langkah berikut:

  1. Dayakan Pengendalian Ralat Dalaman: Untuk menghalang PHP daripada menamatkan skrip disebabkan amaran, kami boleh mendayakan pengendalian ralat dalaman:
<code class="php">// create new DOMDocument
$document = new \DOMDocument('1.0', 'UTF-8');

// set error level
$internalErrors = libxml_use_internal_errors(true);</code>
Salin selepas log masuk
  1. Muat HTML dan Dapatkan Ralat: Setelah pengendalian ralat dalaman didayakan, kami boleh memuatkan kandungan HTML ke dalam DOMDocument dan mendapatkan sebarang ralat yang dihadapi:
<code class="php">// load HTML
$document->loadHTML($html);

// Retrieve errors
$errors = libxml_get_errors();</code>
Salin selepas log masuk
  1. Lelaran dan Alamat Ralat: Tatasusunan $errors akan mengandungi senarai objek ralat. Kami boleh mengulangi ralat ini dan menanganinya dengan sewajarnya, seperti menambah tanda petikan penutup yang hilang.
  2. Lumpuhkan Pengendalian Ralat Dalaman: Setelah ralat telah ditangani, kami boleh melumpuhkan pengendalian ralat dalaman untuk memulihkan pengendalian ralat PHP biasa:
<code class="php">// Restore error level
libxml_use_internal_errors($internalErrors);</code>
Salin selepas log masuk

Dengan melaksanakan langkah-langkah ini, kami boleh mengurangkan amaran dan ralat maut yang berkaitan dengan kehilangan tanda petikan penutup dalam rujukan entiti dengan berkesan. Ini memastikan bahawa DOMDocument boleh dimuatkan dan diproses dengan jayanya.

Atas ialah kandungan terperinci Mengapakah DOMDocument::loadHTML Membuang Ralat Mengenai Tanda Sebut Harga yang Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!