我有一个函数可以检索某个目录中的文件名。该目录有多个PDF文件。
我想为我收集的每个PDF文件分配一个密钥,其中密钥是位于文件名中-
和.pdf
之间的数字。
例如,我有3个PDF文件:
abc-1.pdf
abc-2.pdf
abc-3.pdf
我想要的是:
1 => abc-1.pdf,
2 => abc-2.pdf,
3 => abc-3.pdf
我的功能目前是:
function getPDFs($PDF_DIR_NAME, $PDF_TOKEN) {
if ($PDF_TOKEN == null || $PDF_TOKEN == '') {
return null;
} else {
$getPDFVersions = $PDF_TOKEN.
"*";
$dirs = glob($PDF_DIR_NAME.
'/'.$getPDFVersions);
$files = array();
foreach($dirs as $d) {
if (filesize($d) > 200) {
$files[] = basename($d);
}
}
return $files;
}
}
如何为每个PDF文档分配键?
提前致谢!
答案 0 :(得分:2)
<强>成分:强>
strrchr()
:查找字符串中最后一个字符 substr()
:返回字符串的一部分 (int)
- 投放到整数(如果需要)<强>配方:强>
-
)的位置,因为它位于ID之前。.
)的位置,因为它位于ID之后(见下文)substr()
删除ID以及在步骤1(和2)(可选)使用ID填充关联数组,如下所示:
$myPDFs = array();
$myPDFs[$id] = $filename;
或者你需要的任何东西。
<强> PS:强>
您可以简单地假设在文件名结尾之前总是4个字符,而不是找到最后一个点的位置。似乎是一个安全的赌注。提示:substr()
可以将负数作为其start
参数。
答案 1 :(得分:0)
感谢@domdom,他的食谱非常完美:)
我将以下代码添加到我的foreach中;
$versions= substr(strrchr(basename($d), "-"), 1);
$versions= preg_replace('/\\.[^.\\s]{3,4}$/', '', $versions);
然后
$files[$qualities] = basename($d);