PHP獲取副檔名的方法

2021-08-08 11:47:28 字數 2434 閱讀 6882

php獲取副檔名的方法

上傳成功示例

array(5)
$ext = substr(strrchr($upfile['name'], '.'), 1);

var_dump($ext);

結果: string(4) 「docx」

$ext = substr($upfile['name'], strrpos($upfile['name'], '.')+1);

var_dump($ext);

結果: string(4) 「docx」

$ext = end(explode('.', $upfile['name']));

var_dump($ext);

結果: string(4) 「docx」

$info = pathinfo($upfile['name']);

$ext = $info['extension'];

var_dump($ext);

結果: string(4) 「docx」

$ext = pathinfo($upfile['name'], pathinfo_extension);

var_dump($ext);

結果: string(4) 「docx」

前四種方法都有些小的問題。

要想完全正確獲取檔案的副檔名,必須要能處理以下三種特殊情況。

1.沒有副檔名

2.路徑中包含了字元.,如/home/test.d/test.txt

3.路徑中包含了字元.,但檔案沒有副檔名。如/home/test.d/test

很明顯:

方法1、方法2不能處理第三種情況,

方法3不能正確處理第一三種情況。

方法4可以正確處理,但是在不存在副檔名時,會發出乙個警告。

只有第5種方法才是最正確的方法。

pathinfo — 返回檔案路徑的資訊

mixed pathinfo (string $path [, int $options = pathinfo_dirname | pathinfo_basename | pathinfo_extension | pathinfo_filename ] )
pathinfo() 返回乙個關聯陣列包含有 path 的資訊。返回關聯陣列還是字串取決於 options。

path

要解析的路徑。

options

如果指定了,將會返回指定元素;

它們包括:

pathinfo_dirname - 目錄

pathinfo_basename - 檔名(含副檔名)

pathinfo_extension - 副檔名

pathinfo_filename - 檔名(不含副檔名,php>5.2)

這四個常量的值分別是1、2、4、8,

如果沒有指定 options 預設是返回全部的單元。

返回值

如果沒有傳入 options ,將會返回包括以下單元的陣列 array:dirname,basename 和 extension(如果有),以 及filename。

例子:

<?php

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";

echo $path_parts['basename'], "\n";

echo $path_parts['extension'], "\n";

echo $path_parts['filename'], "\n"; // since php 5.2.0

?>

以上例程會輸出:

/www/htdocs/inc

lib.inc.php

phplib.inc

例子:

<?php

$path_parts = pathinfo('/path/emptyextension.');

var_dump($path_parts['extension']);

$path_parts = pathinfo('/path/noextension');

var_dump($path_parts['extension']);

?>

以上例程的輸出類似於:

string(0) ""

notice: undefined index: extension in test.php on line 6

null

php獲取副檔名

第一種 123 4567 891011 1213 1415 獲取副檔名 substr strrchr name.txt 1 function fileextension fstr file extension fileextension abc def.g 123 print r file exte...

PHP獲取副檔名

第一種 tok strtok string,使用strtok將字串分割成乙個個令牌 while tok count count arr i count 1 file type arr i 第二種 arr explode string 使用explode 函式分割字串,返回值是乙個陣列 count c...

php獲取 副檔名

1 str as.da.efg 2 獲取檔案字尾名 3 strrchr 查詢指定字元在字串中的最後一次出現 4echo substr strrchr str,1 5 67 strrpos 計算指定字串在目標字串中最後一次出現的位置 8echo substr str,strrpos str,1 9 1...