gpt4 book ai didi

php - 使用PHP查找文件名中包含字符串或模式的目录中的所有文件

转载 作者:IT王子 更新时间:2023-10-28 23:58:19 29 4
gpt4 key购买 nike

我正在尝试使用 PHP 列出文件名与特定模式匹配的目录(递归或非递归)中的文件。我对正则表达式从来都不是太好,所以你能提供的任何帮助都会很棒。我可以搜索对返回的文件名的文字检查,但我认为这不是一个好主意:)

更新 + 最终解决方案:1/18/2011 @ 8:06 PM

一旦我对正则表达式有了更多了解,我就找到了另一种方法来做我正在寻找的事情。诚然,我对使用 regex 的位置感到非常沮丧,但现在我得到了一点,这要归功于一位 friend 把我拉到一边,用比我在在线指南中找到的更简单的术语来解释其中的一些内容。

此解决方案基本上检查具有“prefixone”或“prefixtwo”前导前缀的特定图像,同时还验证它是某种类型(jpg、jpeg、png)的图像并匹配任何以下格式。

根据您从 Wordpress(我使用它的地方)传递的 slug,它将与该正则表达式匹配。这是一个示例 list :

prefixone.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.002.jpeg
prefixtwo.123-abc._tag2._tag1.003.jpg
prefixone.123-abc._tag2.004.jpeg
prefixtwo.345-xyz._tag2._tag3._tag1.005.jpg
prefixtwo.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.001.png
prefixtwo.456-rst._tag1.001.png

所有这些文件都可能在我们的 opendir() 函数的文件列表中返回,如果 slug 匹配,这些文件中的任何一个都可能是匹配的。无论文件名中标记信息的顺序如何。

我希望这可以帮助其他正在使用正则表达式的用户。掌握窍门很痛苦,但是一旦您了解了一些基本知识,其余的就会开始迅速到位并开始构建您自己的。

代码:

<?php
// create an array to hold directory list
$results = array();

// create a handler for the directory
$directory = $_SERVER['DOCUMENT_ROOT'].'/some/path/to/images/';
$handler = opendir($directory);

// open directory and walk through the filenames
while ($file = readdir($handler)) {

// if file isn't this directory or its parent, add it to the results
if ($file != "." && $file != "..") {

// check with regex that the file format is what we're expecting and not something else
if(preg_match('#^(prefixone|prefixtwo)[^\s]*\.'.$wordpress-slug.'\.[^\s]+(\.(jpg|jpeg|png))#', $file)) {

// add to our file array for later use
$results[] = $file;
}
}
}
?>

我实际上并不需要递归,但是网上确实有很多递归示例,这确实是我最不担心的。按模式进行内容隔离是这个任务的核心,所以上面的代码就足够了。

旁注:

对于昨天指出“已接受的评论”的人,我不知道我错过了这一点,我深表歉意。我今天过得很糟糕。抱歉,如果我似乎对任何人的评论嗤之以鼻。这是一个很棒的社区,我也很乐意尽我所能回馈社会。

最佳答案

使用 glob to find pathnames matching a patternGlobIterator.

如果您需要递归 use a RegexIterator and a RecursiveDirectoryIterator.

标记此 CW 是因为该问题肯定是重复的,并且您可以在使用搜索功能时轻松找到上述所有问题的示例。请这样做。

关于php - 使用PHP查找文件名中包含字符串或模式的目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718379/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com