[英]Special characters encoding in PHP while using Loadhtmlfile
我正在使用一個PHP文件來分析不同網頁的標題,描述和其他標簽。
這是我們的代碼
if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
$images = [];
$url = $_GET['req'];
$ext = ['.jpeg', 'jpg', 'png', 'bmp', 'ico'];
$doc = new DOMDocument('1.0','UTF-8');
$doc->loadHTMLFile($url);
$doc->encoding = 'UTF-8';
var_dump($doc);
$uri = $doc->documentURI;
$parse = parse_url($uri);
$host = $parse['host']; //hostname
$title = $doc->getElementsByTagName('title')->item(0); // title
$metas = $doc->getElementsByTagName('meta');
$details["title"] = $title->textContent;
$details["host"] = $host;
$details['uri'] = $uri;
foreach ($metas as $meta) {
...繼續...
在這里,如果我們的URL文檔包含任何特殊字符,則PHP無法識別它。 它給我們帶來亂碼。 我在SO上經歷了不同的問題,這似乎是UTF-8編碼問題。 但是我已經在代碼中使用了UTF 8。 請幫我。
注意在構造函數中使用encoding參數。 這並不意味着所有數據都會以提供的編碼自動為您編碼。 一旦選擇了默認UTF-8以外的編碼,就需要自己做。 有關如何正確使用其他編碼的信息,請參閱有關DOM函數的注釋。
構造函數示例清楚地表明,版本和編碼僅以XML標頭結尾。
引薦來源網址 : http : //php.net/manual/en/domdocument.construct.php
IT看起來構造函數不需要您將第二個參數傳遞給它。 您是否嘗試過在沒有該代碼的情況下運行代碼? 我承認我對DOMDocument的理解有點差,但是如果它代表一個完整的HTML文檔,那么大多數網絡瀏覽器對於丟失編碼信息不會有太多的猶豫,他們會盡力而為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.