php glob可选字符

时间:2015-11-09 09:45:35

标签: php regex glob

我的技能在PHP中是有限的,所以我将不胜感激以下任何帮助。在文件系统中,我有一个文件5.japan.jpg,我想在不知道扩展名的情况下从var japan匹配它,或者文件名前面是否有[number.dot]。我到目前为止:

$var = 'japan';
glob($var.'.*');

当然,上述内容与japan.jpgjapan.pdf匹配,但不匹配5.japan.jpg。有人能指出我正确的方向吗?我需要包含前面带有任意数字+点的文件,例如16.var.jpg1.var.jpg,但不能仅排除var.jpg。谢谢!

2 个答案:

答案 0 :(得分:2)

感谢您的帮助。我最终使用了以下

glob($path.'/*'.$name.'*.{jpg,jpeg,png,gif}', GLOB_BRACE);

它不是完美的,因为它可能最终匹配包含 var名称的另一个图像,但我认为在我的情况下它足够好而不必在执行之前尝试读取目录中的所有文件preg_match

答案 1 :(得分:0)

如果您将目录列表读入数组,则可以遍历数组并执行以下操作:

$string = '5.japan.gif';
$var = 'japan';

$match = preg_match("/^[0-9]*\.{$var}\.([a-z]+)$/", $string);

echo $match;

glob()似乎提供了一些有限的正则表达式实现,因此我不确定您是否可以直接使用glob()函数