2012-08-05 46 views
20

Tôi chạy mã đầu tiên trên MAMP và nó hoạt động rất tốt. Nhưng khi tôi đã cố gắng để chạy mã trên máy chủ khác, tôi có rất nhiều cảnh báo như:Tải trọng không hoạt động đúng trên máy chủ

Cảnh báo: DOMDocument :: loadHTML(): Bất ngờ kết thúc từ khóa: đầu trong Entity, line: 3349 trong/cgihome /zhang1/html/cgi-bin/getPrice.php trên dòng 17 Cảnh báo: DOMDocument :: loadHTML(): htmlParseStartTag: thẻ không đúng chỗ trong Thực thể, dòng: 3350 trong/cgihome/zhang1/html/cgi-bin/getPrice. pHP trên dòng 17 Cảnh báo: DOMDocument :: loadHTML(): Tag tiêu đề không hợp lệ trong Entity, line: 3517 trong /cgihome/zhang1/html/cgi-bin/getPrice.php trên dòng 17

Các mã sau đây:

<?php 
$amazon = file_get_contents('http://www.amazon.com/blablabla'); 
$doc = new DOMdocument(); 
$doc->loadHTML($amazon); 
$doc->saveHTML(); 
$price = $doc -> getElementById('actualPriceValue')->textContent; 
$ASIN = $doc -> getElementById('ASIN')->getAttribute('value'); 
?> 

Bất cứ ai biết điều gì đang xảy ra? Cảm ơn!

Trả lời

79

Để vô hiệu hóa các cảnh báo, bạn có thể sử dụng

libxml_use_internal_errors(true); 

này làm việc cho tôi. Manual

Thông tin cơ bản: Bạn đang tải HTML không hợp lệ. HTML không hợp lệ là khá phổ biến, DOMDocument::loadHTML sửa chữa hầu hết các sự cố, nhưng cung cấp cảnh báo theo mặc định.

Với libxml_use_internal_errors bạn có thể kiểm soát hành vi đó. Đặt nó trước khi tải tài liệu:

libxml_use_internal_errors(true); 
$doc->loadHTML($amazon); 
+0

Sự cố được giải quyết. Cảm ơn rất nhiều! – LuZ

+0

Cũng đừng quên ghé thăm trang hướng dẫn sử dụng cho một chức năng tạo ra một số lỗi trong tương lai. Bạn thường tìm thấy các ghi chú hữu ích và thông tin sử dụng ở đó. Ngoài ra còn có những nhận xét của người dùng. Xem ['DOMDocument :: loadHTML'] (http://de.php.net/DOMDocument.loadHTML) – hakre

+0

@ user1577801: Nếu câu trả lời này giải quyết được vấn đề của bạn, hãy xem xét upvoting và chấp nhận nó, bằng cách nhấp vào dấu tick màu xanh lá cây lớn dưới điểm số của câu trả lời. –

0

vấn đề này liên quan đến phi đang xHTML

Như DOMDocument() chỉ có thể xử lý XHTML sạch bạn cần phải dọn dẹp mã của bạn

Php có phần mở rộng thực hiện công việc khá tốt. Gọi Tidy php.net/book.tidy

Nó có thể được khôn lanh như bạn có thể cần phải phép nó trong php.ini của bạn

Sau đó

$tidy_config = array( 
        'clean' => true, 
        'output-xhtml' => true, 
        'show-body-only' => true, 
        'wrap' => 0, 

        ); 

$tidy = tidy_parse_string($html, $tidy_config, 'UTF8'); 
$tidy->cleanRepair(); 
$doc = new DOMdocument(); 
$doc->loadHTML((string) $tidy); 
1

Bạn có thể surpress cảnh báo như thế này:

@$doc->loadHTML($amazon); 
Các vấn đề liên quan