이 글은 주로 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, '.'), 1); }
두 번째 방법 :
function get_extension($file) { return substr($file, strrpos($file, '.')+1); }
3번째 방법:
function get_extension($file) { return end(explode('.', $file)); }
4번째 방법:
function get_extension($file) { $info = pathinfo($file); return $info['extension']; }
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('/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+
최대 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!