Задача звучит так: Напишите скрипт, который найдёт в строке все даты и заменит их на дату с днем недели
<?php
$str = 'Давайте устроим встречу 20.05.2022 и потом ещё одну 12.06.2022';
// ЗДЕСЬ НУЖЕН КОД
echo $str; // Давайте устроим встречу 20.05.2022 (пт) и потом ещё одну 12.06.2022 (вс).
Ее я выполнил так:
<?php
$str = 'Давайте устроим встречу 20.05.2029 и потом ещё одну 09.06.2022';
$n = preg_match_all('/\d{2}\.\d{2}.\d{4}/', $str, $matches);
$new = [];
foreach ($matches as $date => $values) {
foreach ($values as $key => $value) {
$new[] = $value.' '.date("D", strtotime($value));
}
}
str_replace($matches, $new, $str);
echo $str;
Не работает. В чем косяк?
Для этих целей оптимально будет подходить preg_replace_callback()
:
$result = preg_replace_callback("/\d{2}\.\d{2}\.\d{4}/", function($match){
$day = date("D", strtotime($match[0]));
return "{$match[0]} ($day)";
}, $str);
хотя с другой стороны, можно еще и убедиться что у нас представлена действительно дата, например, используя checkdate
.
$result = preg_replace_callback("/(\d{2})\.(\d{2})\.(\d{4})/", function($match){
list($full, $d, $m, $y) = $match;
if(!checkdate($m, $d, $y)) return $full;
$day = date("D", mktime(0,0,0, $m,$d,$y));
return "$full ($day)";
}, $str);
<?php
$str = 'Давайте устроим встречу 20.05.2029 и потом ещё одну 09.06.2022';
preg_match_all('/\d{2}\.\d{2}.\d{4}/', $str, $matches);
$search = [];
$replace = [];
foreach ($matches as $date => $values) {
foreach ($values as $key => $value) {
$search[] = $value;
$replace[] = $value.' '.date("D", strtotime($value));
}
}
$str = str_replace($search, $replace, $str);
echo $str;
echo str_replace($matches, $new, $str);
str_replace - эта функция возвращает строку или массив с замененными значениями(Не меняет исходную).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Использую CURL для получения данных с сайтаЕсли просматривать эту ссылку в браузере - там есть много cookie
Есть 2 запросаОдин по определенному пользователю, а другой по целому массиву пользователей
Хотелось бы получить наводки на ресурсы\книги, где можно систематизировать знания по построению правильного APIТак-то свои API я делал, строил...
как сделать, чтобы при смене селекта (он отсылается к типам записи) Менялись на значения той записи, которую выбратьПоля во всех записях одинаковые