- preg_replace_callback: documentation ( source)
<?php
$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";
}