我想用file_get_contents解析http://www.desi-tashan.com/category/pakistan-tvs/aaj-tv/3-idiots/。爲什麼file_get_contents返回奇怪的字符?
但它返回非常不尋常的字符和符號。
在哪裏好像我解析http://www.desi-tashan.com/它很好地工作。有人可以告訴爲什麼發生這種情況?
是否有涉及的任何編碼解碼?
的頁面似乎與WordPress上做出。
我想用file_get_contents解析http://www.desi-tashan.com/category/pakistan-tvs/aaj-tv/3-idiots/。爲什麼file_get_contents返回奇怪的字符?
但它返回非常不尋常的字符和符號。
在哪裏好像我解析http://www.desi-tashan.com/它很好地工作。有人可以告訴爲什麼發生這種情況?
是否有涉及的任何編碼解碼?
的頁面似乎與WordPress上做出。
你看到的是gzipped
你可能有興趣看gzdecode
或zlib-decode
(請注意,在PHP支持zlib沒有被啓用的內容默認情況下)
您的代碼可能是這樣的
$url = 'http://www.desi-tashan.com/category/pakistan-tvs/aaj-tv/3-idiots/';
$content = file_get_contents($url);
$decoded_content = gzdecode($content); // or zlib_decode($content);
stackoverflow上的另一個解決方案here,它在請求告知服務器不要gzip的請求中添加HTTP標頭Accept-Encoding
。
但是,它不www.desi-tashan.com
,服務器忽略Accept-Encoding
頭工作,並始終返回gzip壓縮的內容
謝謝堆隊友..它的工作 –
解決方案效果很好,謝謝! –
您可以簡單地使用javascript charAt method在特定的位置,以獲得一個字符串的字符。 或 非常清楚,只需用該文件名提供該功能,它將返回所選文件的擴展名。
我已經看到這種情況發生在Web服務器配置錯誤的網站上,並且無論客戶端是否表明它可以應對,都會發回一個壓縮頁面。 (客戶端用Accept-Encoding
頭文件指出,file_get_contents不會發送。)這通常在Web瀏覽器中起作用,因爲它們要麼默認壓縮頁面,要麼即使沒有要求,也能應對gzip壓縮的響應一。 (順便說一句,如果在unix衍生的系統上,你可以很容易地確認返回的內容是通過將其保存到文件然後運行file來確認的,或者只是查看結果的前幾個字節自己的gzip數據從1F 8B開始)
我不是手動解壓縮內容,而是親自使用PHP的curl庫。可以配置請求內容gzip壓縮的,如果你這樣做,它會透明地爲你解壓結果:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://actualidad.rt.com/actualidad');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_ENCODING , 'gzip');
$content = curl_exec ($ch);
這是更長遠的性能要優於手動解碼的結果,如果Web服務器得到的正常在將來配置爲將純文本發送給無法處理gzip的客戶端時,此代碼仍將請求並解碼壓縮版本。
對於不支持'gzdecode'的主機,這是更好的解決方案 – SaidbakR
我在谷歌找到了這個(http://www.oooff.com/php-scripts/basic-php-scraped-data-parsing/basic-php-data-parsing.php),它可能有幫助 –
頁面不會告訴太多關於編碼或wordpress相關的解析... –
符號可能是二進制圖像 –