У меня есть такая строка: «Срок доставки составляет 3-4 дня. Если вы выберете« экспресс », срок доставки составит 1-2 дня. Оплата в течение 30 дней».
Как я могу добавить 1 день к каждому числу в строке без повторного создания строки? Результат должен быть: «Срок доставки составит 4-5 дней. Если вы выберете« экспресс », срок доставки составит 2-3 дня. Оплата в течение 31 дня».
Что насчет 31 дня? Может, дойдет до 32?
preg_replace_callback('/\d+/',function($n) {return intval($n)+1;},$input); вау, это было сложно: D
Это был 30, а не 31. @Mihai
@NiettheDarkAbsol ~ return intval($n)+1; не будет работать, но return intval($n[0])+1; будет
@RamRaider Вот что происходит, когда я не отлаживаю свои язвительные комментарии. XD Забыл, что это JavaScript, который передает индивидуальные параметры функции обратного вызова, а не PHP.






Вы можете использовать preg_replace_callback для этого:
<?php
$s = "The delivery time will be 3-4 days. If you choose 'express' the delivery time will be 1-2 days. Pay within 30 days.";
function callback($matches) {
return $matches[0] + 1;
}
$pattern = '~([0-9]+)~';
$r = preg_replace_callback($pattern, 'callback', $s);
echo $r;
?>
<?php
$str = "The delivery time will be 3-4 days. If you choose 'express' the delivery time will be 1-2 days. Pay within 30 days";
$str = preg_replace_callback(
'([0-9]+)',
function ($matches) {
return $matches[0]+1;
},
$str
);
echo $str;
?>
Почему ты скопировал мой ответ?
@baao, нет, сэр, я работал над этим и не видел вашего ответа перед тем, как опубликовать его, эта страница была открыта. но это точно соответствует. Извините.
Что ты пробовал? Есть код, которым можно поделиться?