Парсинг строки с помощью регулярного выражения
Помогите вытащить данные из строки с помощью регулярного выражения.
Ко мне приходит строка:
<td class="news_date">21 мар 2022 </td><td><a href="https://www.bills.ru/news/? bid=598344">Минстрой не планирует вводить мораторий на начисление пеней и долгов по ЖКУ</a> <span class="bizon_api_news_original_date">(от 21 мар 2022)</span></td></tr><tr class="'
- С помощью выражения
preg_match('/[0-9]{1,2}\s[а-я].+?/iU', $item, $arr) я получаю'21 мар 2022 </td>' - Далее с помощью инструкции
preg_replace("/^\s*|\s*$/", '', str_replace('</td>', '', $arr))привожу строку в состояние "21 мар 2022"
Вопрос: Как с помощью первого регулярного выражении (в п. 1) все почистить, функция trim не работает почему то.
Ответы (1 шт):
Вариант с одним preg_replace(). Удаляем все символы с начала строки до первой цифры ИЛИ все символы после первого вхождения 4-х цифр до конца строки ИЛИ все подряд идущие пробельные символы, кроме первого
<?php
$array = [
'<td class="news_date">21 мар 2022 </td><td><a href="https://www.bills.ru/news/? bid=598344">Минстрой не планирует вводить мораторий на начисление пеней и долгов по ЖКУ</a> <span class="bizon_api_news_original_date">(от 21 мар 2022)</span></td></tr><tr class="',
'<td class="news_date"> 25 апреля 2023 </td><td><a href="https://www.bills.ru/news/? bid=598344">Минстрой не планирует вводить мораторий на начисление пеней и долгов по ЖКУ</a> <span class="bizon_api_news_original_date">(от 21 мар 2022)</span></td></tr><tr class="'
];
$res = preg_replace('/^[^\d]*|(?<=\d{4}).*$|(?<=\s)\s+/', "", $array);
var_dump($res);
?>
array(2) {
[0]=>
string(14) "21 мар 2022"
[1]=>
string(20) "25 апреля 2023"
}