如何使用PHP获取除包含某些单词之外的所有图像文件名?

时间:2014-07-17 05:07:03

标签: php regex

我喜欢用PHP来获取目录中的所有文件名,除非文件名包含某个单词,例如" thumbnail"。

这就是我获取所有图像文件名的方法:

$images = glob($imagesDir . $albumName . '/' . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);

所以我试过了:

$images = glob($imagesDir . $albumName . '/' . '^(?!thumbnail$).*.{jpg,jpeg,png,gif}', GLOB_BRACE);

显然它不会返回任何东西。我不熟悉PHP中的正则表达式。我做错了吗?

2 个答案:

答案 0 :(得分:3)

使用preg_grep(),您可以使用正则表达式排除包含" thumbnail" ..

$images = array_values(preg_grep('/^(?!.*thumbnail).*$/', glob($imagesDir . $albumName . '/' . '*.{jpg,jpeg,png,gif}', GLOB_BRACE)));

答案 1 :(得分:2)

正则表达式,仅匹配不包含单词can be a bit difficult的字符串,并且通常效率低下。使用正则表达式和PHP的组合可能是最好的选择。这样的事情应该做:

$images = glob($imagesDir . $albumName . '/' . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$images = array_filter($images, function($s) { return strpos($s,'thumbnail') === false; });

此外,我最诚挚的抱歉让我的答案的第一部分押韵超过预期。