我有表示文件路徑的字符串。像這樣的東西。在PHP中過濾文件名的正則表達式
folder1/folderA/file1.flv folder2/folderB/file1.mp4 folder3/folderC/file1.jpg
我想寫,基本上對有效擴展,如.flv
,.mp4
列表相匹配的表達,.flv
我相信我的方式在這裏下車,但這裏是我有.[(\.flv/)|(\.wmv/)|(\.mp4)]
滑稽,我敢肯定......但希望能顯示出要點。
我有表示文件路徑的字符串。像這樣的東西。在PHP中過濾文件名的正則表達式
folder1/folderA/file1.flv folder2/folderB/file1.mp4 folder3/folderC/file1.jpg
我想寫,基本上對有效擴展,如.flv
,.mp4
列表相匹配的表達,.flv
我相信我的方式在這裏下車,但這裏是我有.[(\.flv/)|(\.wmv/)|(\.mp4)]
滑稽,我敢肯定......但希望能顯示出要點。
如果我正確地解釋它,你可能只是想是這樣的:
/[.](flv|mp4|wmv)$/
的$
確保它在字符串/文件名的末尾匹配。該方案是在括號中列出,並[.]
僅僅是\.
作爲正則表達式的替代方法,您可以使用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";
$str = "folder1/folderA/file1.jpg";
$found = preg_match("/[.]+(jpg|flv)$/", $str, $returns);
print_r ($returns);
我傳遞的正則表達式作爲一個字符串給另外一個功能更好的符號;否則,我與你同在! http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_list(更多參考) – Ecropolis 2011-04-21 19:53:53
@Ecro啊,夠公平的。在這種情況下它不起作用。也許在問題中添加該信息以獲得更多答案 – 2011-04-21 19:54:54