从链接中读取文件的隐藏扩展名

时间:2012-11-26 03:04:27

标签: php

我需要从网上抓取的一些链接中读取pdf扩展名文件。链接保存在$link变量中。 但有时,扩展名没有写在链接中,例如:http://tstc.bz/docs/490除了490是pdf文件,当我点击它时,扩展名将存在。如何阅读隐藏的扩展名?谢谢 我尝试过使用PATHINFO

if (strtolower(pathinfo($link,PATHINFO_EXTENSION)) === 'pdf'){

2 个答案:

答案 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;
}