我每天都会生成xml文件并重命名为特定结构,如下所示:
03-17-2017 02 05 09 PM - (20000) - Item 1.xml
03-17-2017 02 06 14 PM - (20001) - Item 2.xml
03-17-2017 02 06 19 PM - (20002) - Item 3.xml
03-17-2017 02 08 03 PM - (20003) - Item 4.xml
03-17-2017 02 08 53 PM - (20004) - Item 5.xml
03-17-2017 02 09 41 PM - (20002) - Item 3.xml
正如您所看到的,我有时会使用不同的时间戳获得重复项,例如20002
。
有没有办法以编程方式排除这个并且在我的检索中只包含唯一的数字?文件名结构始终相同,数字始终为6位数字。
现在我正在使用glob来返回目录中的文件
$files = glob("03-17-2017/*.xml");
if (is_array($files)) {
foreach($files as $filename) {
//
}
是否有选择仅检索具有唯一编号的文件名的函数或方法?
答案 0 :(得分:1)
获得所需结果的两种方法:
- 使用strpos
和substr
函数:
$files = [];
foreach (glob("03-17-2017/*.xml") as $f) {
$start_pos = strpos($f, "(") + 1;
$num = substr($f, $start_pos, strpos($f, ')') - $start_pos);
if (!isset($files[$num])) $files[$num] = $f;
}
print_r($files);
- 使用preg_match
函数:
$files = [];
foreach (glob("03-17-2017/*.xml") as $f) {
preg_match("/\((\d{5})\)/", $f, $m); // capturing the number
$num = $m[1];
if (!isset($files[$num])) $files[$num] = $f;
}