Как заменить текст между точками?

121
04 декабря 2020, 21:50

Делаю вывод даты с текстовым месяцем. От даты отнимается несколько дней.

Как составить регулярное выражение, чтобы заменить текст между точками, и точки на пробелы?

Например, сегодня 08.05.2019. Отнимаем 15 дней, и выводим "23 апреля 2019".

$_monthsList = array(".01." => "января", ".02." => "февраля", 
".03." => "марта", ".04." => "апреля", ".05." => "мая", ".06." => "июня", 
".07." => "июля", ".08." => "августа", ".09." => "сентября",
".10." => "октября", ".11." => "ноября", ".12." => "декабря");
$currentDate = date_create(date("Y-m-d"));
date_modify($currentDate, '-15 day');
$date =  date_format($currentDate, 'd.m.Y');
$date = preg_replace(регулярное выражение, " ".$_monthsList[$_mD]." ", $date);
echo $date;
Answer 1

Используйте preg_replace_callback и регулярное выражение '~\.\d{2}\.~':

$_monthsList = array(".01." => "января", ".02." => "февраля", 
".03." => "марта", ".04." => "апреля", ".05." => "мая", ".06." => "июня", 
".07." => "июля", ".08." => "августа", ".09." => "сентября",
".10." => "октября", ".11." => "ноября", ".12." => "декабря");
$currentDate = date_create(date("Y-m-d"));
date_modify($currentDate, '-15 day');
$date = date_format($currentDate, 'd.m.Y');
$date = preg_replace_callback('~\.\d{2}\.~', function ($m) use ($_monthsList) {
    return isset($_monthsList[$m[0]]) ?  " " . $_monthsList[$m[0]] . " " : $m[0];
 }, $date);
echo $date; // - 23 апреля 2019

См. демо на PHP онлайн.

Выражение \.\d{2}\. находит точку, затем 2 цифры и снова точку.

READ ALSO
Как утановить ограничение времени на fsockopen

Как утановить ограничение времени на fsockopen

Проблема такая: скрипт стучится к неправильному IP слишком долго (>30s)

131
SMS шлюз для верификации номера телефона

SMS шлюз для верификации номера телефона

Есть форма отправки с полями имени фамилией email и телефонаНужно реализовать проверку номера телефона с помощью смс кода

124
Curl загрузка файла не зная расширения

Curl загрузка файла не зная расширения

Использую curl Не понимаю, как сохранять файл не зная его расширения?! Тк

109
логический оператор OR в blade laravel 5.8

логический оператор OR в blade laravel 5.8

использую laravel версии 58 и в шаблоне blade хочу использовать такую конструкцию {{$student->name OR ""}} судя по некоторым источникам должно работать,...

145