我需要从网上抓取的一些链接中读取pdf扩展名文件。链接保存在$link
变量中。
但有时,扩展名没有写在链接中,例如:http://tstc.bz/docs/490
除了490是pdf文件,当我点击它时,扩展名将存在。如何阅读隐藏的扩展名?谢谢
我尝试过使用PATHINFO
if (strtolower(pathinfo($link,PATHINFO_EXTENSION)) === 'pdf'){
答案 0 :(得分:2)
使用mime_content_type
,文档here来获取您尝试加载的文件类型。
如果要缓存链接的内容,这是一个不错的选择,因为您需要在本地拥有该文件。否则,请像baba建议一样,使用get_headers
链接(文档here),将非零值作为第二个参数传递给结果数组中的keys
。然后,只需从结果数组中读取[Content-Type]
答案 1 :(得分:1)
您可以使用get_headers
$link = "http://tstc.bz/docs/490";
if (getPdf($link)) {
// yes its a PDF File
}
使用的功能
function getPdf($link) {
$ext = strtolower(pathinfo($link, PATHINFO_EXTENSION));
if (empty($ext)) {
$type = array_change_key_case(get_headers($link, true), CASE_LOWER);
if (is_array($type['content-type']))
return false;
if (strtolower($type['content-type']) === "application/pdf") {
return true;
}
}
if ($ext === 'pdf') {
return true;
}
return false;
}