2010-02-01 2 views
1

문자열을 검사하여 다음 형식인지 확인합니다.이미지 파일 이름을 검사하는 정규 표현식

"thumb_*.jpg|gif|png" 

여기서 *는 와일드 카드이며 jpg | gif | png는 선택적 파일 확장명입니다.

이것은 PHP

입니다. 그게 가능하니?

추신 : 그냥 반환 값을 true 또는 false로 원한다

답변

4
$valid = preg_match('~^thumb_.*\.(jpg|gif|png)$~', $filename) != 0; 

또는 당신이 정말로 확장자는 선택 사양 일하려면 :

$valid = preg_match('~^thumb_.*(\.(jpg|gif|png))?$~', $filename) != 0; 

편집 : 클리 터스에 암의 주석 사항에 따라 ' 슬래시가 일치하지 않도록 와일드 카드를 제한 할 수 있습니다.

$valid = preg_match('~^thumb_[^/]*\.(jpg|gif|png)$~', $filename) != 0; 
0
if (preg_match('/^thumb_.*?\.(jpg|gif|png)$/i', $filename)) { 
    ... 
} 
+0

이렇게하면 파일 이름이 잘못되거나 보안 위협 (예 : __ ../../../__)이 허용 될 수 있습니다. . *는 특정 문자로 제한해야합니다. – Amirshk

+0

안녕하세요. 이 $ 파일 이름이 true를 반환하지 않는 이유는 무엇입니까? "thumb_abc.jpg" – user263241

+0

"true"가 반환되지 않습니다. 그것은 '1'즉, 매치 한 시간의 수를 반환 할 것이다. –