>백엔드 개발 >PHP 튜토리얼 >PHP에서 파일 확장자를 결정하고 얻는 여러 가지 방법

PHP에서 파일 확장자를 결정하고 얻는 여러 가지 방법

墨辰丷
墨辰丷원래의
2018-06-07 13:49:282233검색

이 글은 주로 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가지 방법

기본적으로 다음 방법:

첫 번째 방법:

function get_extension($file)
{
substr(strrchr($file, &#39;.&#39;), 1);
}

두 번째 방법 :

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에 두 번째 매개변수가 있다는 것을 몰랐습니다. 하지만 잘 생각해 보면 처음 네 가지 방법에는 여러 가지 단점이 있습니다. 파일 확장자를 완전히 정확하게 얻으려면 다음 세 가지 특별한 상황을 처리할 수 있어야 합니다.

파일 확장자 없음

경로에 . 문자가 포함되어 있습니다(예: /home/test.d/test.txt

경로에 . 문자가 포함되어 있지만 파일에는 확장자가 없습니다. 예를 들어 /home/test.d/test

1과 2는 세 번째 상황을 처리할 수 없고, 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개가 있는 것은 아닙니다. 예를 들어 확장이 없으면 확장 요소도 없으므로 네 번째 유형 이 메서드는 경고만 감지합니다. 그러나 phpinfo는 두 번째 매개변수도 지원합니다. 반환할 데이터의 특정 부분을 지정하기 위해 상수를 전달할 수 있습니다.

PATHINFO_DIRNAME - 디렉토리
PATHINFO_BASENAME - 파일 이름(확장자 포함)
PATHINFO_EXTENSION - 확장자
PATHINFO_FILENAME - 파일 이름(확장자 없음, PHP>5.2)

이 네 가지 상수의 값은 1, 2, 4, 8입니다. 처음에는 OR 연산을 통해 여러 개를 지정할 수 있다고 생각했습니다.

pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);

나중에 이것이 작동하지 않는다는 것을 알았습니다. 여러 OR 연산 상수 중 가장 작은 것만 반환합니다. 즉, 4개의 플래그 비트 중 가장 작은 비트는 상수 1입니다.

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장 사항:

PHP는 SSL 암호화, 암호 해독, 확인 및 서명을 구현합니다.

PHP의 싱글턴 모드 및 팩토리 모드에 대한 자세한 설명과 예

php는 중국어 파일 다운로드를 지원합니다

위 내용은 PHP에서 파일 확장자를 결정하고 얻는 여러 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.