2

我想在 upcount_name 函数中更改这个正则表达式:

protected function upcount_name_callback($matches) {
    $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
    $ext = isset($matches[2]) ? $matches[2] : '';
    return ' ('.$index.')'.$ext;
}

protected function upcount_name($name) {
    return preg_replace_callback('/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/', 
    array($this, 'upcount_name_callback'),$name,1);
}

来自 blueimp 上传脚本。此脚本更改名称以获得唯一的文件名,如“image (1).jpg”、“image (2),jpg”等....(请注意括号内的基本名称和数字之间的空格)

现在我想找回“image-1.jpg”、“image-2.jpg”。

4

3 回答 3

1

你的意思是你有名为“image-1.jpg”、“image-2.jpg”等的独特文件吗?如果是这样,我认为您可以更改正则表达式以使其行为相同(但匹配该格式),如下所示:

return preg_replace_callback('/(?:(?:-([\d]+))?(\.[^.]+))?$/'

但我可能完全误解了。

于 2013-09-01T18:51:17.693 回答
0

如果这就是你想要的,只需更改返回线如下

 protected function upcount_name_callback($matches) {
        $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
        $ext = isset($matches[2]) ? $matches[2] : '';
        return '-'.$index.'.$ext; // replaced this return ' ('.$index.')'.$ext;
    }

protected function upcount_name($name) {
    return preg_replace_callback('/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/', 
    array($this, 'upcount_name_callback'),$name,1);
}
于 2013-09-01T18:46:53.653 回答
0

来自这里的超级家伙,发布解决方案,但他的答案被删除了,所以我在这里发帖感谢超级家伙......

/(?:(?:-([\d]+))?(\.[^.]+))?$/
于 2013-09-01T19:02:13.593 回答