Php 如何使用递增整数动态更新文件名?

Php 如何使用递增整数动态更新文件名?,php,Php,我想更新一个文件名,使其在每次更新时都像这样 some_name_1, some_name_2, some_name_3, etc. 每次更新都会将尾部整数增加1。下面是我的原型,我想在实现它之前确保这是最好的实践方法。另外,我也不确定PHP是否会100%正确地执行隐式转换 这是更新文件名的好方法吗 // ... in a class private function updateFileName() { $pattern = '#_(\d+)$#'; $subject =

我想更新一个文件名,使其在每次更新时都像这样

 some_name_1, some_name_2, some_name_3, etc.
每次更新都会将尾部整数增加1。下面是我的原型,我想在实现它之前确保这是最好的实践方法。另外,我也不确定PHP是否会100%正确地执行隐式转换

这是更新文件名的好方法吗

// ... in a class
private function updateFileName()
{
    $pattern = '#_(\d+)$#';
    $subject = $this->file_name; // $subject holds current file name
    preg_match($pattern, $subject, $matches);
    if($matches[0])
    {
        $patterns = array();
        $temp = $matches[0];
        $patterns[0] = '/$temp$/';
        $replacements = array();
        $replacements[0] = $matches[0] + 1;
        preg_replace($patterns, $replacements, $subject); // $subject now holds new name
    }
}
澄清

  • 文件名实际上是一个散列,是一个字符串
  • _1等将始终位于字符串的末尾(使用锚点可能很好)

您可以在一次预更换中完成整个操作:

preg_replace("/\b([^\w]+)\b/i",'_',$filename);

您可以在一个preg__替换中完成整个操作:

preg_replace("/\b([^\w]+)\b/i",'_',$filename);