php去掉檔案副檔名的方法:1、使用pathinfo函數傳回完整檔案名稱的一部分;2、使用basename函數從檔案名稱中刪除該副檔名;3、使用substr和strrpos函數傳回沒有擴充名的完整路徑和檔名。
推薦:《PHP影片教學》
PHP從檔案名稱(filename)中刪除擴展名(extension)的三種方法
如果你有一個檔名,你需要從PHP刪除副檔名(extension),有很多方法可以做到這一點。這裡有三種方法。
使用pathinfo()函數
pathinfo()函數傳回一個包含dirname,basename,extension和filename的陣列。或者,您可以傳遞一個PATHINFO_常數,並傳回完整檔案名稱的一部分:
$filename ='filename.html'; $without_extension = pathinfo($filename, PATHINFO_FILENAME);
如果檔案名稱包含完整路徑,則只傳回不帶副檔名的檔案名稱。
使用basename()函數
如果副檔名是已知的並且對於所有檔案名稱是相同的,則可以將第二個可選參數傳遞給basename()以告訴它從檔案名稱中刪除該副檔名:
$filename ='filename.html'; $without_extension = basename($filename,'.html');
如果檔案名稱包含完整路徑,則僅傳回不含副檔名的檔案名稱。
使用substr和strrpos
$filename ='filename.html'; $without_extension = substr($filename, 0, strrpos($filename, "."));
如果檔案名稱包含完整路徑,則傳回沒有副檔名的完整路徑和檔案名稱。您可以使用basename()來刪除路徑,例如:
basename(substr($filename, 0, strrpos($filename, ".")));
儘管它比使用pathinfo慢。
速度比較
使用PHP 5.4在Mac上以10,000,000次循環運行其中的每一個:
pathinfo:10.13秒 basename:7.87秒 substr / strrpos:6.05秒 basename(substr / strrpos):11.98秒
如果檔案名稱不包含完整路徑,或者如果它不重要,那麼substr / strrpos選項似乎是最快的。
如果檔案名稱包含路徑並且您不想要路徑但確實知道要刪除的副檔名是什麼,那麼basename似乎是最快的。
如果檔案名稱包含路徑,則不需要路徑,也不知道副檔名是什麼,那麼使用pathinfo()選項。
結論
還有很多其他方法可以做到這一點,有些可能會更快。在很多情況下,速度可能沒那麼重要(運行pathinfo的10秒鐘畢竟是10萬次)。這篇文章的目的是展示一些用PHP從檔案名稱中刪除副檔名的方法。
以上是php如何去掉檔案副檔名的詳細內容。更多資訊請關注PHP中文網其他相關文章!