首先,要從獲取文檔中獲取內容類型,請使用常量CURLINFO_CONTENT_TYPE
。
$type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
echo $type;
其次,你只提取HTML而不是圖像。說$ a輸出圖像是錯誤。您輸出HTML <img src="">
。如果你在瀏覽器中這樣做,你會看到圖像,但這是因爲瀏覽器在客戶端獲取這些圖像。
獲取內容類型的最簡單方法是使用檢查文件擴展名。
$ext = pathinfo($a['src'], PATHINFO_EXTENSION);
如果你確實需要使用文件擴展名,你必須做額外的捲曲電話。最好使用curl_multi來並行執行這些操作。
$mh = curl_multi_init();
foreach($html->find('img') as $a) {
$src = $a['src']; // You probably need to rewrite relative URL to absolute URLs
$ch = curl_init($src);
$ch = curl_set_opt($ch, CURLOPT_CUSTOMREQUEST, "HEAD");
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running);
foreach ($handles as $ch) {
$src = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
$image_types[$src] = $type;
}
代碼是未經測試
注意接收到的內容類型永遠不能完全信任,決不應被用於安全措施。如果您想確定,請下載所有圖像(GET請求而不是HEAD請求)並使用fileinfo extension。
我無法讓它工作,但我會接受作爲答案,如果沒有其他事情出現,因爲它確實對我有意義,我一定在做錯事......非常感謝你 – Youss
對不起,我說' $ a',但你需要使用curl處理函數'$ ch'。 –
好吧,現在我看到我真的誤解了你的問題。抱歉,等一下。 –