我正在尝试根据特定参数确定文件。首先,我递归地遍历目录结构,如下所示:
请注意字符串末尾的控制台游戏类型。在此之后,我们有以下内容:
如果您在第二部分中注意到,有一个文件有一个p,另一个文件有一个r。
我的最终目标是确定哪些文件是p *,哪些是r *,所以我的正则表达式我想成为以下内容(伪代码)
/console/p*/
或
/console/r*/
总之,我需要遍历文件,并在函数结束时知道文件名和文件类型(p或r),而不关心控制台类型。谢谢你的帮助
答案 0 :(得分:2)
PHP glob函数将遍历一个匹配满足给定条件的所有文件的目录。
$files = array();
foreach(glob("C:/Users/programmer/Downloads/reviews/*/p*.html") as $filename) {
$files['p'][] = $filename;
}
foreach(glob("C:/Users/programmer/Downloads/reviews/*/r*.html") as $filename) {
$files['r'][] = $filename;
}
这将为您提供如下所示的数组:
array (
p => array (
0 => p123.htm
1 => p456.htm
)
r => array (
0 => r123.htm
1 => r456.htm
)
)
答案 1 :(得分:0)
像
preg_match('~/([pr])[^/]+$~', $file, $m);
if($m[1] == 'p') something
if($m[1] == 'r') something else
//编辑:虽然这直接回答了你的问题,但这不是最有效的方法。根据你的需要,你最好像其他人建议的那样使用glob(),或者更好地使用glob()+ preg_grep(),或者更好的是使用数据库而不是文件。你能告诉我们更多关于想要实现的目标吗?
答案 2 :(得分:0)
假设您只想获取文件列表,请按文件名的第一个字母区分:
遍历目录树,将文件名转换为$ filename。
之类的变量$ files [$ filename [0]] [] = $ filename;
答案 3 :(得分:0)
glob('C:/Users/programmer/Downloads/reviews/*/p*.html');
glob('C:/Users/programmer/Downloads/reviews/*/r*.html');