PHP preg_match 检查文件名以括号中的数字结尾(例如文件名 (1).pdf)
PHP preg_match check filename ends with bracketed number (e.g. filename(1).pdf)
我正在寻找一个 preg_match 正则表达式,它可以检测文件名(作为字符串,包含扩展名)末尾是否有 (n)。如果文件名没有 (n),它将在文件名末尾附加 (n)。如果文件名有(n),则文件名末尾会变成(n+1)。
您可以使用 preg_replace_callback
来处理文件名,使用正则表达式检查文件扩展名之前的可选 (n)
,并使用回调 return 如果数字增加它存在,否则 1.
$filenames = [
'abc(3).jpg',
'xyz.pdf'
];
foreach ($filenames as $filename) {
echo preg_replace_callback('/(?:\((\d+)\))?(\.[^.]+$)/',
function($matches) {
$version = empty($matches[1]) ? 0 : $matches[1];
return '(' . ($version + 1) . ')' . $matches[2];
},
$filename);
echo "\n";
}
输出:
abc(4).jpg
xyz(1).pdf
我正在寻找一个 preg_match 正则表达式,它可以检测文件名(作为字符串,包含扩展名)末尾是否有 (n)。如果文件名没有 (n),它将在文件名末尾附加 (n)。如果文件名有(n),则文件名末尾会变成(n+1)。
您可以使用 preg_replace_callback
来处理文件名,使用正则表达式检查文件扩展名之前的可选 (n)
,并使用回调 return 如果数字增加它存在,否则 1.
$filenames = [
'abc(3).jpg',
'xyz.pdf'
];
foreach ($filenames as $filename) {
echo preg_replace_callback('/(?:\((\d+)\))?(\.[^.]+$)/',
function($matches) {
$version = empty($matches[1]) ? 0 : $matches[1];
return '(' . ($version + 1) . ')' . $matches[2];
},
$filename);
echo "\n";
}
输出:
abc(4).jpg
xyz(1).pdf