2011-04-21 2 views
1

파일 경로를 나타내는 문자열이 있습니다. 이 같은. 나는 기본적으로 같은 .flv, .mp4 유효한 확장 목록에 일치하는 표현을 쓰기 위해 노력하고 있어요PHP에서 파일 이름을 필터링하는 정규 표현식

folder1/folderA/file1.flv 
folder2/folderB/file1.mp4 
folder3/folderC/file1.jpg

, .flv

내가 여기 그러나 여기에서 벗어나는 방법입니다 확신 내가 .[(\.flv/)|(\.wmv/)|(\.mp4)] 코믹이 무엇 , 나는 확실하다. .. 그러나 희망을 갖고 요지를 보여준다.

답변

0

, 당신은 아마 같은 것을 원한다. 대안은 괄호에 표시하고, [.]\.

4

정규식 대신에 pathinfo()을 사용하면 경로에서 파일 확장명을 안전하게 얻을 수 있습니다.

/[.](flv|mp4|wmv)$/ 

$는 문자열/파일 이름의 끝과 일치하는지 확인합니다 : 내가 제대로 해석하면

$allowed_extensions = array("flv", "mp4", "mpeg"); # note: all lowercase 

$ext = pathinfo("/folder1/folderA/file1.flv", PATHINFO_EXTENSION); 

# Search array of allowed extensions 
if (in_array(strtolower($ext), $allowed_extensions)) 
echo "Okay"; 
else 
echo "Fail"; 
+0

내가 다른 함수에 문자열로 정규식을 통과하고 단지 더 좋은 표기법된다 그렇지 않으면 너와 함께있어! http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list (참조 용) – Ecropolis

+0

@Ecro ah, 충분합니다. 이 경우에는 작동하지 않습니다. 그 정보를 질문에 추가하여 좀 더 답변을 얻으십시오. –

0
$str = "folder1/folderA/file1.jpg"; 
$found = preg_match("/[.]+(jpg|flv)$/", $str, $returns); 
print_r ($returns);