用于在PHP中过滤文件名的正则表达式

时间:2011-04-21 19:43:09

标签: php regex pcre

我有表示文件路径的字符串。像这样的东西。

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

我正在尝试编写一个基本匹配有效扩展名列表的表达式,例如.flv.mp4.flv

我相信我离开这里,但这就是我所拥有的.[(\.flv/)|(\.wmv/)|(\.mp4)] 滑稽,我敢肯定......但希望能够展示出这个要点。

3 个答案:

答案 0 :(得分:4)

作为正则表达式的替代方法,您可以使用pathinfo(),它可以从路径中可靠地获取文件扩展名。

$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";

答案 1 :(得分:0)

如果我正确地解释它,你可能只想要这样的东西:

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

$确保它在字符串/文件名的末尾匹配。替代品列在parens中,[.]只是\.

的更好的表示法

答案 2 :(得分:0)

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