gpt4 book ai didi

php - 使用正则表达式对文件列表进行排序

转载 作者:行者123 更新时间:2023-12-05 07:11:15 24 4
gpt4 key购买 nike

我正在编写一个脚本来对文件列表进行排序,获取与特定文件名匹配的最新文件,并将其复制到另一个文件夹。我正在用 PHP 编写此代码,然后使用 CRON 将其设置为每天在特定时间运行。

文件的命名方式如下:VS-order-export-105.xmlVS-order-export-104.xmlcurrent-VS-order-export-105,xmlcurrent-VS-order-export.104.xml

我需要获取最新的这些文件,格式为“order-export-(number).xml”。那些前缀为“current-”的应该被忽略。

我似乎无法让 Regex 正确执行此操作。这是我得到的:

<?php $src = '/public_html/folder/exports/';
$files_src = scandir($src, SCANDIR_SORT_DESCENDING);
foreach($files_src as $file) {
if (preg_match('/(^VS-), (.*)/A', $file) && !is_dir($src . $file)) {
$newest_file_src = $files_src[1];
$newest_file_path_src = $src . $files_src[1];
$dest_file_path = '/public_html/orders/';
rename($newest_file_path_src, $dest_file_path);
}
} ?>

有人可以指出我做错了什么吗?

提前致谢!

最佳答案

在您的模式中,您试图匹配一个逗号后跟一个不存在的空格。

对于更具体的模式,您可以使用

\AVS-order-export-\d+\.xml\z
  • \A 字符串开始
  • VS-order-export- 字面匹配
  • \d+\.xml 匹配1+个数字和.xml
  • \z 字符串结束

Regex demo

例如

if (preg_match('/\AVS-order-export-\d+\.xml\z/', $file)) {

关于php - 使用正则表达式对文件列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60847257/

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