Добавление символов в определенное место

Fuck_oFF

Новичок
Есть строка :
04.55 Т/с "Анатомія Грей"
06.45 15.30 Все буде добре!
08.45 20.00 22.45 МастерШеф 12+
13.00 Битва екстрасенсів 16+
17.30 22.00 Вікна-Новини
18.00 Один за всіх 16+
нужно ее превратить в :
<st>04.55<st> Т/с "Анатомія Грей"
<st>06.45 15.30<st> Все буде добре!
<st>08.45 20.00 22.45<st> МастерШеф 12+
<st>13.00<st> Битва екстрасенсів 16+
<st>17.30 22.00<st> Вікна-Новини
<st>18.00<st> Один за всіх 16+
время нужно заковать в символы <st>
каждая надпись заканчивается на \n
разбиваю строку эксплодом по ключу \n и получаю массив вида ключ-передача.
но вот как заточить время в спец символы не могу догнать. пробовал регулярные выражения - не выходит.. Помогите, пожалуйста
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Задача решается без регулярных варажений:
1. Читаем данные построчно в массив
2. Каждую строку читаем сначала (слева направо) и проверяем посимвольно, является ли тестируемый символ одним из (0-9 пробел или точка]).
Если мы дошли до символа, который не входит в список - запоминаем позицию символа и от него влево на две позиции делаем вставку </st>. В начале каждой строки ставим <st>.

Далее склеиваем данные в строки как надо.

PS: либо регулярными выражениями.
 

Fuck_oFF

Новичок
пока пробовал менять время на слово 'test'
$fp = "
04.55 Т/с Анатомія Грей
06.45 15.30 Все буде добре
08.45 20.00 22.45 МастерШеф 12+
13.00 Битва екстрасенсів 16+
17.30 22.00 Вікна-Новини
18.00 Один за всіх 16+";

$arr = explode("\n", $fp);

foreach ($arr as $value) {
echo preg_replace('/[012][0-9].[0-5][0-9]|[012][0-9].[0-5][0-9]/', test, $value);
}
загвоздка в том , что у передачи может быть несколько выходов , например : 08.45 20.00 22.45 МастерШеф 12+ и тогда preg_replace срабатывает для каждого времени отдельно "test test test МастерШеф 12+" . наверное сначала нужно использовать preg_match чтобы получить время из строки, заковать его в стиль <st>, а потом preg_replace'сом заменить в строке найденные за шаблоном символы на переменную из preg_match закованную в стиль. вот только в случае с передачами, у которых несколько выходов , каждое время будет заковано в стиль, а нужно весь временной диапазон заковать в один стиль... что-то я запутался в этом
 

WMix

герр M:)ller
Партнер клуба
а тут строка c названием типа 21.10 - Киев или 11.09 New York :)
 

ksnk

прохожий
@WMix, Россыпью время с разными часовыми зонами прямо в программе передач местного телеканала? ))). Будут другие данные - возможно будут и другие регулярки.
К слову - метод "вдумчивого просмотра" от c0dex тоже не справится вот так сходу с временнЫм суффиксом...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
С каким еще временным суффиксом?
 

ksnk

прохожий
С каким еще временным суффиксом?
это я пытался понять вот это возражение
а тут строка c названием типа 21.10 - Киев или 11.09 New York :)
Кроме как своеобразное указание на временнУю зону, ничего умного в голову не пришло.
 

WMix

герр M:)ller
Партнер клуба
@ksnk, это название передачи
21.10 - майдан или 11.09 теракт в New York
 

ksnk

прохожий
@ksnk, срежет твой паттерн часть названия
Вот этот паттерн ?
P.S. Про цифры 11.11 в начале названия ? В рамках озвученного тз такое не лечится. Будет более формальное описание формата - можно и дальше говорить. А так - что фантазировать попусту ?
 
Последнее редактирование:
Сверху