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

117
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)

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

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

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

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

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

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

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

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

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

140