PHP でファイル拡張子を特定および取得するいくつかの方法

墨辰丷
リリース: 2023-03-30 12:44:02
オリジナル
2172 人が閲覧しました

この記事では主に、PHP でファイル拡張子を決定および取得するためのいくつかの方法を紹介します。興味のある方はぜひ参考にしてください。

#次のコードは、PHP でファイル拡張子を決定するためのものです

#
<!DOCTYPE>
<html>
<head>
 <meta http-equiv="Content-type" content="text/html" charset="utf-8">
 <title>check file</title>
</head>
<body>
<b>文件扩展名验证</b>
<input type="text" name="int" value="文件.php" onblur="check(this)" id="int">
<input type="button" value="检测" onclick="check_value()">
<script>
 function check(obj){
  if(obj.value == "" || obj.value.length<3){
   alert("输入的长度不能小于3且不能为空!");
   obj.focus();
  }
 }
 function check_value(){
  var str = $("int").value;
  var repx = /\.(php|asp|jsp)$/i;
  var type = str.substring(str.lastIndexOf("."),str.length);
  if(type.match(repx) && str.lastIndexOf(".") != -1){
   alert("文件扩展名正确");
   $("int").focus();
  }else{
   alert("文件扩展名有误");
   $("int").focus();
  }
 }
 function $(obj){
  return document.getElementById(obj);
 }
</script>
</body>
</html>
ログイン後にコピー

#PHP でファイル拡張子を取得する N 通りの方法

基本的には次の方法です:

1 番目の方法:

function get_extension($file)
{
substr(strrchr($file, &#39;.&#39;), 1);
}
ログイン後にコピー

2 番目の方法:

function get_extension($file)
{
return substr($file, strrpos($file, &#39;.&#39;)+1);
}
ログイン後にコピー

3 番目の方法 メソッド:

function get_extension($file)
{
return end(explode(&#39;.&#39;, $file));
}
ログイン後にコピー

4 番目の方法:

function get_extension($file)
{
$info = pathinfo($file);
return $info[&#39;extension&#39;];
}
ログイン後にコピー

5 番目の方法:

function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}
ログイン後にコピー

上記の方法をざっと見たところ、特に 1. 2 つの方法はうまく機能するようです。 pathinfo に 2 番目のパラメータがあることを知りませんでした。しかし、よく考えてみると、最初の 4 つの方法にはさまざまな欠点があります。ファイル拡張子を完全に正しく取得するには、次の 3 つの特殊な状況に対処できなければなりません。

ファイル拡張子なし

パスに文字 . が含まれています (/home/test.d/test.txt など)

パスには文字 . が含まれていますが、ファイル拡張子名ではありません。たとえば、/home/test.d/test

は明らかです。1 と 2 は 3 番目の状況を処理できず、3 は最初と 3 番目の状況を正しく処理できません。 4 は正しく処理されますが、拡張子が存在しない場合は警告が発行されます。方法 5 のみが最も正しい方法です。ちなみに、 pathinfo メソッドを見てください。公式ウェブサイトの紹介文は次のとおりです。

$file_path = pathinfo(&#39;/www/htdocs/your_image.jpg&#39;);
echo "$file_path [&#39;dirname&#39;]\n";
echo "$file_path [&#39;basename&#39;]\n";
echo "$file_path [&#39;extension&#39;]\n";
echo "$file_path [&#39;filename&#39;]\n"; // only in PHP 5.2+
ログイン後にコピー

最大 4 つの要素を含む配列を返しますが、常に 4 つあるとは限りません。たとえば、拡張子がない場合は拡張子もありません。そのため、4 番目のメソッドに警告が表示されます。ただし、phpinfo は 2 番目のパラメータもサポートしています。定数を渡して、返されるデータの特定の部分を指定できます。

PATHINFO_DIRNAME - ディレクトリ

PATHINFO_BASENAME - ファイル名 (拡張子を含む)
PATHINFO_EXTENSION - 拡張子
PATHINFO_FILENAME - ファイル名(拡張子なし) Extension, PHP>5.2)

これら 4 つの定数の値はそれぞれ 1、2、4、8 です。最初は OR 演算で複数指定できると考えていました。

pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);
ログイン後にコピー
Later これは、いくつかの OR 定数のうちの最小のものしか返さないことがわかりました。つまり、4 つのフラグ ビットの最小ビットは定数 1 です。

要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

PHP は SSL 暗号化、復号化、検証、署名を実装します

PHP のシングルトン モードファクトリ パターンの詳細な説明と例

php は中国語ファイルのダウンロードをサポートします

以上がPHP でファイル拡張子を特定および取得するいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート