让我们直接回答我的问题,这些是我的文件夹:
Smarty-3.1.13
Smarty-3.1.15
Smarty-3.1.16
Smarty-3.1.19
这就是我得到foldernames的方式
$smarty_versions = glob("php/Smarty-*");
结果:
Array
(
[0] => php/Smarty-3.1.13
[1] => php/Smarty-3.1.15
[2] => php/Smarty-3.1.16
[3] => php/Smarty-3.1.19
)
现在我正在寻找... em ...可能是 glob 的正则表达式,只能选择最新的文件夹。
实际上我作为第一个参数插入到golb
看起来像regexp失败的所有东西:)有一种方法所以得到这样的最后一个文件夹?
或者我这样做......
$smarty_versions = glob("php/Smarty-*");
$latest_smarty_version = $smarty_versions[count($smarty_versions)-1];
//works but i like it more tiny if possible :)
也许你们知道其他一线解决方案:D
答案 0 :(得分:3)
要使用正确的版本字符串比较,您应该使用version_compare
:
$latest = array_reduce($smarty_versions, function ($latest, $folder) {
if (!$latest) {
return $folder;
}
$latestNum = preg_replace('!^php/Smarty-!', '', $latest);
$folderNum = preg_replace('!^php/Smarty-!', '', $folder);
return version_compare($latestNum, $folderNum, '>') ? $latest : $folder;
});
当然假设Smarty版本遵循与该函数所期望的兼容约定。