PHP에서 특정 파일이 비디오 파일인지 확인해야 할 때가 종종 있습니다. 가장 손쉬운 방법은 파일 이름에서 확장자를 추출한 후, 알려진 비디오 확장자와 일치하는지 비교하는 것입니다.
explode()와 end()로 확장자 확인하기
예를 들어 다음과 같이 .mp4 파일 경로가 담긴 변수가 있다고 가정해 보겠습니다.
$movieFileType="demo.mp4";
이 파일이 비디오 형식인지 확인하려면 먼저 explode() 함수를 사용해 파일 이름을 마침표(.)를 기준으로 분리하고, end() 함수로 배열의 마지막 요소인 확장자를 가져옵니다. 그런 다음 strtolower()로 확장자를 소문자로 변환한 뒤 원하는 값과 비교하면 됩니다.
if(strtolower(end(explode(".",$movieFileType))) =="mp4") {
}
else {
}전체 예제
<!DOCTYPE html>
<html>
<body>
<?php
$movieFileType="demo.mp4";
if(strtolower(end(explode(".",$movieFileType))) =="mp4") {
echo "The movie ",$movieFileType," is of video type.";
} else {
echo "The movie ",$movieFileType," is not of video type.";
}
?>
</body>
</html>위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
출력 결과
The movie demo.mp4 is of video type.
여러 비디오 확장자 한 번에 확인하기
mp4뿐만 아니라 avi, mov, wmv, mkv 등 다양한 비디오 확장자를 동시에 확인하려면 in_array() 함수를 활용하는 것이 좋습니다.
$videoTypes = array("mp4", "avi", "mov", "wmv", "mkv");
$extension = strtolower(end(explode(".", $movieFileType)));
if(in_array($extension, $videoTypes)) {
echo "비디오 파일입니다.";
} else {
echo "비디오 파일이 아닙니다.";
}참고 사항
PHP 7 이상에서는 end() 함수에 explode()의 결과를 직접 전달하면 "Only variables should be passed by reference"라는 알림이 표시될 수 있습니다. 따라서 위 예제처럼 확장자를 변수에 먼저 저장한 후 사용하는 방식이 더 안전하고 권장되는 코딩 스타일입니다.