Tôi muốn tải xuống nội dung của URL bằng cách sử dụng PHP, ngay cả khi mã phản hồi HTTP là 404. file_get_contents
sẽ bị lỗi và tôi không thể tìm câu trả lời bằng Google. Tôi có thể làm cái này như thế nào?Tải xuống nội dung của URL trong PHP ngay cả khi nó trả về 404
Trả lời
Theo mặc định file_get_contents chỉ trả lại nội dung của phản hồi HTTP 200.
With curl you get the headers and the content separately.
Tính đến PHP 5.0, bạn cũng có thể chỉ định một bối cảnh cho file_get_contents
, cho phép bạn làm điều đó mà không dựa vào url (Xem trả lời Gordon).
Sử dụng cURL để thay thế. Nó cho phép kiểm soát tốt hơn nhiều, và sẽ cho phép bạn đọc bất kỳ nội dung nào được truy xuất và mã trạng thái.
Bạn phải configure the stream wrapper để bỏ qua lỗi:
ignore_errors
boolean
Fetch nội dung ngay cả trên mã trạng thái thất bại. Mặc định làFALSE
Nói cách khác, làm
echo file_get_contents(
'http://stackoverflow.com/foo/bar',
false,
stream_context_create(
array(
'http' => array(
'ignore_errors' => true
)
)
)
);
và bạn sẽ nhận được trang 404.
Nếu bạn muốn đây là hành vi mặc định cho dòng HTTP, sử dụng
stream_context_set_default(
array('http' => array(
'ignore_errors' => true)
)
);
Bất kỳ cuộc gọi bằng cách sử dụng wrapper dòng HTTP sẽ sử dụng các cài đặt sau đó, ví dụ bạn chỉ có thể làm
echo file_get_contents('http://stackoverflow.com/foo/bar');
Nếu bạn cũng muốn nhận được response header, chỉ cần làm
print_r($http_response_header);
sau khi cuộc gọi. Biến được (re-) được điền sau mỗi cuộc gọi với trình bao bọc dòng http.
Bước 1: kiểm tra mã trở lại: $content = file_get_contents("websitelink"); if($content === FALSE) { // handle error here... }
Bước 2: ngăn chặn các cảnh báo bằng cách đặt một nhà điều hành kiểm soát lỗi (tức là @
) ở phía trước của cuộc gọi đến file_get_contents(): $content = @file_get_contents($site);
- 1. mms tải xuống nội dung mm thông qua mms url
- 2. Python: Tải xuống tệp Zip được trả về từ URL
- 3. Nhận URL của tập lệnh hiện tại ngay cả khi nó được bao gồm?
- 4. document.activeelement trả về nội dung
- 5. Tải xuống trang html và nội dung của trang
- 6. Tải nội dung trang về biến số
- 7. Url xác thực Pinterest trả về lỗi 404?
- 8. PHP được xác định() tại sao nó trả về false, ngay cả khi hằng số được xác định?
- 9. Cách tải nội dung POST trong php?
- 10. Slim Framework luôn trả về lỗi 404
- 11. Coldfusion 10, IIS 7.5 - Tải 404 ngay cả khi tệp tồn tại
- 12. tệp được phân phát theo nội dung: nội tuyến vẫn đôi khi nhắc tải xuống
- 13. Tại sao IE8 hiển thị trang web của tôi sau đó chuyển hướng ngay đến 404 nội bộ của nó?
- 14. Buộc PDF hiển thị nội tuyến, ngay cả khi Nội dung Bố trí nói khác?
- 15. đặt loại nội dung trong java để tải xuống tệp
- 16. Nhận nội dung URL trong Node.js bằng Express
- 17. Đọc nội dung của URL trong Android
- 18. Đợi đến khi trang được tải trước khi đọc nội dung từ một URL trong Java
- 19. Nội dung phao Silverlight ngay
- 20. cách tải nội dung html url vào chuỗi trong java
- 21. System.Net.HttpWebResponse.GetResponseStream() trả về nội dung bị cắt bớt trong WebException
- 22. index.php và bảo vệ nội dung của nó
- 23. SQL - Trả về tất cả các hàng ngay cả khi số không là cho mục
- 24. Tôi muốn json_encode trong PHP trả về một mảng JSON ngay cả khi các chỉ mục không theo thứ tự
- 25. Đọc nội dung HTML của URL trong OCaml
- 26. Bắt đầu tải xuống tệp hoạt động tốt, ngay cả trong IE?
- 27. Lỗi tùy chỉnh IIS 404: Mã phản hồi trả về URL 200 thay vì
- 28. Tránh các vấn đề về loại nội dung khi tải xuống tệp qua trình duyệt trên Android
- 29. duy trì chiều rộng của span ngay cả khi không có gì trong nó
- 30. V3 của Google Maps: Tải nội dung infowindow qua AJAX
cách tiếp cận Thú vị - nhưng bạn có thể nói nếu bạn gặp lỗi hoặc phản hồi thành công? – sagi
@sagi mã phản hồi sẽ bằng '$ http_reponse_header' – Gordon
+1 Gordon là đúng, biến $ http_response_header chứa chính xác những gì nó nói trên tin, trong đó rõ ràng bao gồm mã trạng thái. –