Как прибавить число к последнему числу в строке

160
27 марта 2019, 23:00

Есть какое то определенное значение, получаю последнее в нем число, если оно есть прибавляю к нему 1.

Подскажите как связать с ним все то что идет до этого числа ?

// Возможные значения => результат:
// test => test-2
// test-0 => test-1
// test-5847 => test-5848
// 3-4_6-doom-2-test-0 => 3-4_6-doom-2-test-1
// s3-4c6-doom-2-test-0890 => s3-4c6-doom-2-test-0891
// s3--2-test-08w90 => s3--2-test-08w90-2
// test527 => test527-2
$name = "test-458";
preg_match('/-[0-9]+$/', $name, $result);
if(isset($result[0])) $num = str_ireplace('-', '', $result[0]) + 1; else $num = 2;
echo $num; // 459

Как вывести test-459 ?

Answer 1

Для подобных целей имеется preg_replace_callback. Получится нечто вроде

$name = "test-458";
$name = preg_replace_callback('/-(\d+)$/', function($matches){
               return $matches[1] + 1;
          }, $name);
print_r($name);
Answer 2
$str = 'test-458';
echo preg_replace_callback(
    '~(?<=-)\d+$~',
    function($a){ return ++$a[0]; },
    $str
);

Результат:

test-459
Answer 3
$name="test";
preg_match('/-[0-9]+$/', $name, $var);
if(isset($var[0]))
echo preg_replace('/-[0-9]+$/', $var[0]-1, $name); 
else 
echo $name.='-2';
READ ALSO
Чат на php и mysql

Чат на php и mysql

Пишу чат на php, сообщения отправляются в базу данных mysql и получается достать их оттуда, но проблема в том, что не получается вывести email того...

163
Что делает эта функция preg_replace_callback?

Что делает эта функция preg_replace_callback?

preg_replace_callback("/&#(\d+);/", array($this, "chr"), $strQuery);

131
Как случайно не удалить базу данных? [закрыт]

Как случайно не удалить базу данных? [закрыт]

Как правильно делать запрос, чтобы не удалить базу данных? Слышал, некоторые умудряются с помощью ошибочного запроса удалить базу данных,...

147
Laravel View::make render и HTML сущности

Laravel View::make render и HTML сущности

Задача: нужно из контроллера вставить один шаблон view1 в другой view2При этом оба шаблона - blade (view1

151