全局正则表达式模式 - PHP
Glob regex patterns - PHP
我有一个包含多张图片的文件夹,但我对标题如下的图片感兴趣:"Images_123456_nature_XL.jpg, Images_458599_3d_L.jpg, Images_065455_animals_XL.jpg"
。所以像这样尝试 glob
函数:
$images = glob($value."/^Images_(\d+)_([a-zA-Z]+)_([A-Z]+).{jpg,png,gif}", GLOB_BRACE);
但它似乎work.Any 对此没有帮助!非常感谢。
glob() 不采用正则表达式,它采用简单的模式,只用任何东西替换 * 小丑,和 ?一个字符。
你可以试试这样的东西:
$files = array_filter(glob('*.{jpg,png,gif}', GLOB_BRACE), function($file) {
return preg_match('/^Images_(\d+)_([a-zA-Z]+)_([A-Z]+)\.(jpg|png|gif)$/', basename($file));
});
这在内存方面并不是很有效(因为 glob() 将 return 所有文件在你过滤它之前),但这至少有效。
我有一个包含多张图片的文件夹,但我对标题如下的图片感兴趣:"Images_123456_nature_XL.jpg, Images_458599_3d_L.jpg, Images_065455_animals_XL.jpg"
。所以像这样尝试 glob
函数:
$images = glob($value."/^Images_(\d+)_([a-zA-Z]+)_([A-Z]+).{jpg,png,gif}", GLOB_BRACE);
但它似乎work.Any 对此没有帮助!非常感谢。
glob() 不采用正则表达式,它采用简单的模式,只用任何东西替换 * 小丑,和 ?一个字符。
你可以试试这样的东西:
$files = array_filter(glob('*.{jpg,png,gif}', GLOB_BRACE), function($file) {
return preg_match('/^Images_(\d+)_([a-zA-Z]+)_([A-Z]+)\.(jpg|png|gif)$/', basename($file));
});
这在内存方面并不是很有效(因为 glob() 将 return 所有文件在你过滤它之前),但这至少有效。