簡體   English   中英

使用正則表達式排除文件

[英]Exclude files using a regular expression

我想排除所有.mp3.jpeg文件(使用正則表達式, 而不是 PHP)。 我知道!preg_match

我下面的示例始終匹配:

$str = 'file.mp3'; // Exclude
$ex  = '~(?!\.(mp3|jpe?g))$~';

if (preg_match($ex, $str)) {
    echo "Match!";
} else {
    echo "Nothing Match!";
}

您的否定前瞻不起作用,因為沒有什么可以期待的。 請記住,環視斷言是零寬度的-它們實際上並不消耗字符。 您仍然需要考慮文件擴展名字符。

更改表達式,如下所示:

$ex = '~(?!\.(mp3|jpe?g))[a-z]{3,4}$~';

演示版


更好的方法是使用pathinfo() 維護一個您要禁止的擴展名數組,然后使用in_array()檢查文件名的擴展名是否該數組中:

$disallowed = ['mp3', 'jpg', 'jpeg', /* more extensions */ ];

if (in_array(pathinfo($str, PATHINFO_EXTENSION), $disallowed)) {
    # code...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM