国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

PHP中獲取文件擴(kuò)展名的N種方法小結(jié)

2024-05-04 23:15:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
第1種方法:

復(fù)制代碼 代碼如下:


function get_extension($file)
{
substr(strrchr($file, '.'), 1);
}


第2種方法:

復(fù)制代碼 代碼如下:


function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}


第3種方法:

復(fù)制代碼 代碼如下:


function get_extension($file)
{
return end(explode('.', $file));
}


第4種方法:

復(fù)制代碼 代碼如下:


function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}


第5種方法:

復(fù)制代碼 代碼如下:


function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}


以上幾種方式粗看了一下,好像都行,特別是1、2種方法,在我不知道pathinfo有第二個(gè)參數(shù)之前也一直在用。但是仔細(xì)考慮一下,前四種方法都有各種各樣的毛病。要想完全正確獲取文件的擴(kuò)展名,必須要能處理以下三種特殊情況。
沒(méi)有文件擴(kuò)展名
路徑中包含了字符.,如/home/test.d/test.txt
路徑中包含了字符.,但文件沒(méi)有擴(kuò)展名。如/home/test.d/test
很明顯:1、2不能處理第三種情況,3不能正確處理第一三種情況。4可以正確處理,但是在不存在擴(kuò)展名時(shí),會(huì)發(fā)出一個(gè)警告。只有第5種方法才是最正確的方法。順便看一下pathinfo方法。官網(wǎng)上介紹如下:
$file_path = pathinfo('/www/htdocs/your_image.jpg');

echo "$file_path ['dirname']/n";
echo "$file_path ['basename']/n";
echo "$file_path ['extension']/n";
echo "$file_path ['filename']/n"; // only in PHP 5.2+
它會(huì)返回一個(gè)數(shù)組,包含最多四個(gè)元素,但是并不會(huì)一直有四個(gè),比如在沒(méi)有擴(kuò)展名的情況下,就不會(huì)有extension元素存在,所以第4種方法才會(huì)發(fā)現(xiàn)警告。但是phpinfo還支持第二個(gè)參數(shù)。可以傳遞一個(gè)常量,指定返回某一部分的數(shù)據(jù):
PATHINFO_DIRNAME - 目錄
PATHINFO_BASENAME - 文件名(含擴(kuò)展名)
PATHINFO_EXTENSION - 擴(kuò)展名
PATHINFO_FILENAME - 文件名(不含擴(kuò)展名,PHP>5.2)
這四個(gè)常量的值分別是1、2、4、8,剛開(kāi)始我還以為可以通過(guò)或運(yùn)算指定多個(gè):
pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);
后來(lái)發(fā)現(xiàn)這樣不行,這只會(huì)返回幾個(gè)進(jìn)行或運(yùn)算常量中最小的那個(gè)。也就是四個(gè)標(biāo)志位中最小位為1的常量。
以下是一些補(bǔ)充方法
一,php explode函數(shù)

復(fù)制代碼 代碼如下:


$pic = 'abc.php';
$pics = explode('.' , $pic);
echo $num = count($pics);
echo '<br>'.$pics[$num-1];



這樣就可以輸出
.php了。

下面利用foreach

復(fù)制代碼 代碼如下:


foreach ($pics as $value) //2
{
$a = $value;
}
echo $a.'<br>';



來(lái)有一個(gè)比較好的函數(shù)end我推薦使用此函數(shù)快捷 end函數(shù)用法

復(fù)制代碼 代碼如下:


echo end($pics);
echo '<br>';



其它的訪(fǎng)方法可以在文件上傳時(shí)判斷,不過(guò)那需要文件上傳不上傳我們不能使用$_FILES來(lái)操作。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新津县| 庆云县| 海宁市| 望江县| 河间市| 长岭县| 沧源| 台北市| 松潘县| 岳西县| 诸城市| 陇川县| 江城| 文水县| 蒙城县| 法库县| 穆棱市| 黄山市| 历史| 阿图什市| 修水县| 洪雅县| 郑州市| 唐山市| 汨罗市| 阜宁县| 凤庆县| 江源县| 建阳市| 平顶山市| 井陉县| 临夏县| 福海县| 霸州市| 镇坪县| 雷州市| 梨树县| 博野县| 鄂托克前旗| 清镇市| 邓州市|