所以我有一个数组的值,这种情况下,文件扩展名,但我使用preg_match过滤掉不允许的文件扩展名。
有没有简单的方法将数组转换为正则表达式模式?
源阵列
(
[1] => 'file-to-path/thumbs/allowedfile.pdf',
[2] => 'file-to-path/thumbs/notallowedfile.psd',
[3] => 'file-to-path/project/test/notallowedfile.txt',
)
允许的扩展名数组
(
[0] => bmp
[1] => jpg
[2] => jpeg
[3] => gif
...
)
我现在使用的代码。
foreach($array as $key => $val){
if( !preg_match('/^.*\.(jpg|png|jpeg|bmp|gif|pdf)$/i', $val ) ){
// this part needs to be an array
'/^.*\.(jpg|png|jpeg|bmp|gif|pdf)$/i' -> [array with the values]
}
}
3条答案
按热度按时间jpfvwuh41#
我会避免使用正则表达式,而使用
pathinfo($value, PATHINFO_EXTENSION)
和in_array()
例如,它填充
$error
数组并筛选数组。https://3v4l.org/oSOJT
结果:
如果你只是想过滤数组,那么你可以使用array_filter()
gzszwxb42#
你可以使用array_filter函数,然后在可用扩展名列表中检查单个文件的扩展名,如果它是有效的扩展名,则返回true,否则返回false,它是排除的。
41zrol4v3#
所有不允许的文件,您可以快速忽略它们,同时使用最少的CPU
在我的浏览器中,我得到了这个push运行代码段:
或