preg_match用于文件扩展名列表

时间:2012-05-12 12:36:42

标签: php preg-match

我想对我构建的一个简单的正则表达式有所了解,以验证逗号分隔的文件扩展名列表(在逗号字符之前或之前也可能有一个或多个空格)。

此正则表达式应返回以下值:

$list = 'jpg,png,gif'; // valid
$list = 'jpg   , png, gif'; // valid
$list = 'jpg'; // valid
$list = 'jpg, png, gif'; // valid
$list = 'jpg png, gif'; // INVALID
$list = 'jpg png'; // INVALID

我正在使用下面的正则表达式,你怎么看?可以优化还是缩短?

if(!preg_match( '#^[0-9a-zA-Z]+([ ]*,[ ]*[0-9a-zA-Z]+)*$#' , $list))
{
    echo 'invalid extension list';
} else{
    echo 'valid extension list';
}

感谢您的好意见

2 个答案:

答案 0 :(得分:2)

也许更简单的方法是按,拆分并查看是否有任何结果包含空格。

function isvalid($var)
{
    return !strpos ($var, ' ');
}

$array = explode (',', $list);
$array_filtered = array_filter ($array, 'isvalid');

if ($array == $array_filtered) {
    echo 'Valid';
}
else {
    echo 'Invalid';
}

这应该比使用正则表达式更快。<​​/ p>

答案 1 :(得分:1)

你也可以稍微缩短一下:

preg_match('#^\w+(\s*,\s*\w+)*$#' , $list)