2011-04-21 140 views
1

我有表示文件路徑的字符串。像這樣的東西。在PHP中過濾文件名的正則表達式

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

我想寫,基本上對有效擴展,如.flv.mp4列表相匹配的表達,.flv

我相信我的方式在這裏下車,但這裏是我有.[(\.flv/)|(\.wmv/)|(\.mp4)] 滑稽,我敢肯定......但希望能顯示出要點。

回答

0

如果我正確地解釋它,你可能只是想是這樣的:

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

$確保它在字符串/文件名的末尾匹配。該方案是在括號中列出,並[.]僅僅是\.

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"; 
+0

我傳遞的正則表達式作爲一個字符串給另外一個功能更好的符號;否則,我與你同在! http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list(更多參考) – Ecropolis 2011-04-21 19:53:53

+0

@Ecro啊,夠公平的。在這種情況下它不起作用。也許在問題中添加該信息以獲得更多答案 – 2011-04-21 19:54:54

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