技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

PHP從文件名(filename)中刪除擴(kuò)展名(extension)的三種方法

作者:admin    時(shí)間:2019-5-8 17:53:11    瀏覽:

如果你有一個(gè)文件名,你需要從PHP中刪除擴(kuò)展名(extension),有很多方法可以做到這一點(diǎn)。這里有三種方法。

使用pathinfo()函數(shù)

pathinfo()函數(shù)返回一個(gè)包含dirnamebasename,extensionfilename的數(shù)組?;蛘?,您可以傳遞一個(gè)PATHINFO_常量,并返回完整文件名的那一部分:

$filename ='filename.html';
$without_extension = pathinfo($filename, PATHINFO_FILENAME);

如果文件名包含完整路徑,則僅返回不帶擴(kuò)展名的文件名。

使用basename()函數(shù)

如果擴(kuò)展名是已知的并且對(duì)于所有文件名是相同的,則可以將第二個(gè)可選參數(shù)傳遞給basename()以告訴它從文件名中刪除該擴(kuò)展名:

$filename ='filename.html';
$without_extension = basename($filename,'.html');

如果文件名包含完整路徑,則僅返回不帶擴(kuò)展名的文件名。

使用substr和strrpos

$filename ='filename.html';
$without_extension = substr($filename, 0, strrpos($filename, "."));

如果文件名包含完整路徑,則返回沒(méi)有擴(kuò)展名的完整路徑和文件名。您可以使用basename()來(lái)刪除路徑,例如:

basename(substr($filename, 0, strrpos($filename, ".")));

盡管它比使用pathinfo慢。

速度比較

使用PHP 5.4在Mac上以10,000,000次循環(huán)運(yùn)行其中的每一個(gè):

  • pathinfo:10.13秒
  • basename:7.87秒
  • substr / strrpos:6.05秒
  • basename(substr / strrpos):11.98秒

如果文件名不包含完整路徑,或者如果它不重要,那么substr / strrpos選項(xiàng)似乎是最快的。

如果文件名包含路徑并且您不想要路徑但確實(shí)知道要?jiǎng)h除的擴(kuò)展名是什么,那么basename似乎是最快的。

如果文件名包含路徑,則不需要路徑,也不知道擴(kuò)展名是什么,那么使用pathinfo()選項(xiàng)。

結(jié)論

還有很多其他方法可以做到這一點(diǎn),有些可能會(huì)更快。在很多情況下,速度可能并不那么重要(運(yùn)行pathinfo的10秒鐘畢竟是10萬(wàn)次)。這篇文章的目的是展示一些用PHP從文件名中刪除擴(kuò)展名的方法。

相關(guān)文章

標(biāo)簽: extension  
相關(guān)文章
    x
    • 站長(zhǎng)推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */