PHP: добавьте 1 к каждому числу в строке

У меня есть такая строка: «Срок доставки составляет 3-4 дня. Если вы выберете« экспресс », срок доставки составит 1-2 дня. Оплата в течение 30 дней».

Как я могу добавить 1 день к каждому числу в строке без повторного создания строки? Результат должен быть: «Срок доставки составит 4-5 дней. Если вы выберете« экспресс », срок доставки составит 2-3 дня. Оплата в течение 31 дня».

Что ты пробовал? Есть код, которым можно поделиться?

Andreas 18.03.2018 11:24

Что насчет 31 дня? Может, дойдет до 32?

Mihai 18.03.2018 11:24
preg_replace_callback('/\d+/',function($n) {return intval($n)+1;},$input); вау, это было сложно: D
Niet the Dark Absol 18.03.2018 11:25

Это был 30, а не 31. @Mihai

revo 18.03.2018 11:29

@NiettheDarkAbsol ~ return intval($n)+1; не будет работать, но return intval($n[0])+1; будет

Professor Abronsius 18.03.2018 11:34

@RamRaider Вот что происходит, когда я не отлаживаю свои язвительные комментарии. XD Забыл, что это JavaScript, который передает индивидуальные параметры функции обратного вызова, а не PHP.

Niet the Dark Absol 18.03.2018 15:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
109
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать 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;

?>

Вот демо

preg_replace_callback()

<?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 18.03.2018 11:40

@baao, нет, сэр, я работал над этим и не видел вашего ответа перед тем, как опубликовать его, эта страница была открыта. но это точно соответствует. Извините.

LIGHT 18.03.2018 11:43

Другие вопросы по теме