2013-07-07 74 views
0

我想從PHP中的已知基本名稱中獲取文件名。如何從基本名稱中找到文件名或擴展名

我搜索了並找到了pathinfo(),但是您已經在參數中給出了帶有基本名稱和擴展名的文件名。

另外在pathinfo()文檔:

$path_parts = pathinfo('/path/basename'); 
var_dump($path_parts['extension']); 

這或多或少是我需要的,但結果是:

string '' (length=0)

我想要的擴展,而不是一個空字符串。我知道基本名稱,但我不知道擴展名,我該如何抓取?

+1

所以你想擴展一個無擴展文件? (facepalm,facepunch) – CodeAngry

+0

pathinfo只是一個內部解析器,如果文件名沒有擴展名,那麼就沒有擴展名。如果你想從遠程文件中獲取文件類型,那麼你應該查找Content-Type:標題並使用它來定義你的擴展。 –

+0

如果文件名有擴展名,那麼你知道它。你只需要'抓';) – brasofilo

回答

0

要列出文件名,只知道基地,您可以使用glob。它返回一個數組,因爲可能存在多個文件具有相同的基礎,但不同的擴展名,或者根本就沒有:

$files = glob($base.'.*'); 
if (!empty($files)) 
    echo $files[0]; 
+0

謝謝!這就是我一直在尋找的東西。它會給我的圖像的完整路徑,而不知道它的擴展名(。*) – mauricehofman

-1

你可以使用:

$ext = end(explode('.',$filename)); 

注:這不是有恃無恐這個擴展名來確定文件類型。

+1

如果pathinfo()沒有給出擴展名,那麼這個方法不會是 –

0

如果文件中有一個擴展,你可以得到它像這樣

$file_name = 'test.jpg'; 
$ext = pathinfo($file_name, PATHINFO_EXTENSION); 
echo $ext; // output:jpg 

例子:掃描圖像目錄中的所有文件,並顯示是否允許ext

$image_path = __DIR__ . '/images/'; 
$files = scandir($image_path); 
$allowed_images = array('jpg', 'jpeg', 'gif', 'png'); 
foreach ($files as $file_name) { 
    $ext = pathinfo($file_name, PATHINFO_EXTENSION); 
    if (in_array($ext, $allowed_images)) { 
     echo $ext . ' allowed<br>'; 
    } else { 
     echo $ext . ' not allowed<br>'; 
    } 
} 
+0

這隻適用於如果您的腳本中擴展名(類型)硬編碼(本例中爲.jpg) – mauricehofman

+0

我已經硬編碼了擴展名演示。它也適用於動態擴展,只有要求是該文件應該有一個擴展名。它是硬編碼還是動態生成並不重要。我更新了掃描圖像目錄的答案並顯示結果。 –

相關問題