За последние 24 часа нас посетили 53628 программистов и 1703 робота. Сейчас ищут 1077 программистов ...

Имеется ТВ-программа в сокращенном виде...

Тема в разделе "PHP для новичков", создана пользователем forever_young, 25 май 2017.

  1. forever_young

    forever_young Новичок

    С нами с:
    24 мар 2017
    Сообщения:
    26
    Симпатии:
    2
    Discovery Russia (Сокращенно)
    Понедельник, 22 Мая
    09:00, 15:00, 01:00, 04:50 Беар Гриллс: Выжить любой ценой 12+
    10:00, 16:30, 22:30, 06:55 Как это устроено? 12+
    10:30, 16:00, 22:00, 06:30 Как это сделано? 12+
    11:00, 17:00, 00:00, 08:10 Охотники за реликвиями 12+
    11:30, 17:30, 00:30, 08:35 Охотники за складами 16+
    12:00, 13:00, 14:00 Выживание без купюр 16+
    18:00, 23:00, 07:20 Махинаторы 12+
    19:00, 02:00 Колесо: игра на выживание 16+
    20:00, 03:00 Голые и напуганные 16 +
    21:00, 03:55 Аляска: семья из леса. Выживание в глуши 16+
    05:40, 06:05 Молниеносные катастрофы 16+

    Вторник, 23 Мая
    09:00, 15:00, 01:00, 04:50 Беар Гриллс: Выжить любой ценой 12+
    10:00, 16:30, 22:30, 06:55 Как это устроено? 12+
    10:30, 16:00, 22:00, 06:30 Как это сделано? 12+
    11:00, 17:00, 00:00, 08:10 Охотники за реликвиями 12+
    11:30, 17:30, 00:30, 08:35 Охотники за складами 16+
    12:00, 13:00, 14:00 Коллекционеры авто 12+
    18:00, 23:00, 07:20 Махинаторы 12+
    19:00, 03:00 Гений автодизайна 12+
    20:00, 02:00 Уникальные тачки с Уиллом Кастро 12+
    21:00, 03:55 Уличные гонки 16+
    05:40, 06:05 Молниеносные катастрофы 16+
    ...


    Как средствами php привести к такому виду? Первая мысль "регулярные выражения", но и здесь не все так просто...
    Речь идет о помещении каждого времени с новой строки и добавлении к нему соответствующей тв-программы. Кроме того, если следом друг за другом идут одинаковые программы, оставить только первую строку.


    Discovery Russia (Сокращенно)
    Понедельник
    09:00 Беар Гриллс: Выжить любой ценой
    10:00 Как это устроено?
    10:30 Как это сделано?
    11:00 Охотники за реликвиями
    11:30 Охотники за складами
    12:00 Выживание без купюр
    15:00 Беар Гриллс: Выжить любой ценой
    16:00 Как это сделано?
    16:30 Как это устроено?
    17:00 Охотники за реликвиями
    17:30 Охотники за складами
    18:00 Махинаторы
    19:00 Колесо: игра на выживание
    20:00 Голые и напуганные
    21:00 Аляска: семья из леса. Выживание в глуши
    22:00 Как это сделано?
    22:30 Как это устроено?
    23:00 Махинаторы
    00:00 Охотники за реликвиями
    00:30 Охотники за складами
    01:00 Беар Гриллс: Выжить любой ценой
    02:00 Колесо: игра на выживание
    03:00 Голые и напуганные
    03:55 Аляска: семья из леса. Выживание в глуши
    04:50 Беар Гриллс: Выжить любой ценой
    05:40 Молниеносные катастрофы
    06:30 Как это сделано?
    06:55 Как это устроено?
    Вторник
    07:20 Махинаторы
    08:10 Охотники за реликвиями
    08:35 Охотники за складами
    09:00 Беар Гриллс: Выжить любой ценой
    10:00 Как это устроено?
    10:30 Как это сделано?
    11:00 Охотники за реликвиями
    11:30 Охотники за складами
    12:00 Коллекционеры авто
    15:00 Беар Гриллс: Выжить любой ценой
    16:00 Как это сделано?
    16:30 Как это устроено?
    17:00 Охотники за реликвиями
    17:30 Охотники за складами
    18:00 Махинаторы
    19:00 Гений автодизайна
    20:00 Уникальные тачки с Уиллом Кастро
    21:00 Уличные гонки
    22:00 Как это сделано?
    22:30 Как это устроено?
    23:00 Махинаторы
    00:00 Охотники за реликвиями
    00:30 Охотники за складами
    01:00 Беар Гриллс: Выжить любой ценой
    02:00 Уникальные тачки с Уиллом Кастро
    03:00 Гений автодизайна
    03:55 Уличные гонки
    04:50 Беар Гриллс: Выжить любой ценой
    05:40 Молниеносные катастрофы
    06:30 Как это сделано?
    06:55 Как это устроено?
    ...
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    по сути можно просто заменить , на перевод строки ? str_replace()
     
  3. forever_young

    forever_young Новичок

    С нами с:
    24 мар 2017
    Сообщения:
    26
    Симпатии:
    2
    Согласен. Но как напротив времени вписать название тв-программы?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Правильная мысль. А что сложного? Составить регулярку?

    А дальше всё очень просто. Берёте строку, вырезаете из неё время, и пишите в массив в качестве ключей. Потом ключи сортируете http://fi2.php.net/manual/ru/function.uksort.php, и пробегаетесь по массиву, чтоб удалить идущие друг за другом дубли.
     
  5. forever_young

    forever_young Новичок

    С нами с:
    24 мар 2017
    Сообщения:
    26
    Симпатии:
    2
    Ок. /[012][0-9]:[0-5][0-9]/ - регулярка. Удалил время, остались одни тв-программы. Сделал из этих строк массив (именно из строк, верно? Типа каждая строка - это элемент массива) Как новичок, не пойму что дальше делать... Расскажите подробнее, пожалуйста?
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    до preg_replace надо сделать ещё preg_match_all по времени. Нужно чтоб каждое время было индексом массива, название передачи - значением.

    P.S. Не надо оправдываться тем, что новичок :)
    --- Добавлено ---
    В принципе, задача простая. Немного заставляет задуматься только возможный случай, когда время есть в названии передачи (какое-нибудь "Вест в 21:00"). Вот его навскидку не могу сказать, как правильно обработать.
    --- Добавлено ---
    Хотя, может какой-нибудь регуляркой с использованием маркера начала строки, думать и пробовать надо.
     
  7. forever_young

    forever_young Новичок

    С нами с:
    24 мар 2017
    Сообщения:
    26
    Симпатии:
    2
    Получается в итоге будут два массива. Я правильно понял? Один - со временем, другой - с названиями. А как дальше?
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Нет, один массив, в котором ключи - время, значения - названия. Дальше останется отсортировать по ключам, убрать идущие подряд дубли и вывести
    --- Добавлено ---
    Ассоциативный массив я имею в виду
     
  9. forever_young

    forever_young Новичок

    С нами с:
    24 мар 2017
    Сообщения:
    26
    Симпатии:
    2
    О! o_O Я тут параллельно с Ваших слов пробую. А как это провернуть в один? Поясните, пожалуйста...
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Да подсказывать-то больше нечего. Дальше только код за тебя писать.
     
    neverlose нравится это.