2013-01-07 220 views
11

可能重複:
How remove extension from string (only real extension!)刪除擴展名從文件

我的品牌新的PHP,並有很多東西需要學習!我正在爲我們的King County Iris Society網站試驗MiniGal Nano。除了一個小例外,它適用於我們的目的:照片文件名稱需要在縮略圖下可見。我已經創建了一個工作,但它顯示了擴展。我已經找到函數的代碼示例,但不知道如何將它們合併到現有的代碼中。任何援助將不勝感激。

實例鏈接:http://www.kcis.org/kcisphotogallery.php?dir=Iris.Japanese

非常感謝!

+0

所以,簡而言之,你想從腳本名稱中刪除'.php'? – Supericy

+0

這取決於你如何定義「擴展名」。最後一個點後的所有內容?任何點後的一切?等等你可以使用一個正則表達式,對子字符串做一些欺騙等等。但是你需要從邏輯上定義你想要移除的東西。考慮像「somefile.jpeg」或「some.file.jpg」這樣的文件名,或者甚至僅僅是「somefile」,根本沒有「擴展名」。 – David

回答

28

有幾個方法可以做到這一點,但我想的更快的途徑之一是以下

// $filename has the file name you have under the picture 
$temp = explode('.', $filename); 
$ext = array_pop($temp); 
$name = implode('.', $temp); 

另一種解決方案是這樣的。我沒有測試它,但它看起來像它應該在一個文件名

$name = substr($filename, 0, (strlen($filename))-(strlen(strrchr($filename, '.')))); 

也可爲多段工作:

$info = pathinfo($filename); 
$name = $info['filename']; 
$ext = $info['extension']; 

// Shorter 
$name = pathinfo($file, PATHINFO_FILENAME); 

// Or in PHP 5.4 
$name = pathinfo($filename)['filename']; 

在所有這些,$name包含不帶擴展名的文件名

+2

這並不壞,但不會幫助'my.image.jpg' –

+0

爲此添加了另一個,試圖在您回答時找到它haha – Ascherer

+1

您還可以彈出第一個數組的元素,然後再次加入陣列。 – automaticoo

7

您可以使用pathinfo()

<?php 

// your file 
$file = 'image.jpg'; 

$info = pathinfo($file); 

// from PHP 5.2.0 : 
$file_name = $info['filename']; 

// before PHP 5.2.0 : 
// $file_name = basename($file,'.'.$info['extension']); 

echo $file_name; // outputs 'image' 

?> 
+4

通常只需要詢問'pathinfo()'函數需要什麼:'pathinfo($ file,PATHINFO_FILENAME)' – salathe

3

如果你肯定知道文件擴展名是始終將是四個字符長(如「.JPG」),你可以簡單地使用substr(),你輸出的文件名:

echo substr($filename, 0, -4); 

如果文件擴展名中可能存在字符數較多或較少的圖像(例如「.jpeg」),則需要找出最後一個時間段的位置。既然你輸出從第一個字符的文件名,那個時期的位置可以用來指示字符數要顯示:

$period_position = strrpos($filename, "."); 
echo substr($filename, 0, $period_position); 

有關這些功能的信息,在http://php.net/substr看看PHP手冊和http://php.net/strrpos