ФорумПрограммированиеPHP для идиотов → Парсинг. Регулярное выражение.

Парсинг. Регулярное выражение.

  • SHtoRM

    Сообщения: 22 Репутация: N Группа: Кто попало

    Spritz 8 октября 2010 г. 10:33

    Здравствуйте!
    Решил сделать тв-программу для сайта, возник замут с регулярным выражением.
    Есть кусок кода

    <ul id="leftlist_10"><li><strong>07:00</strong><div>ОНТ представляет: &quot;Воскресное утро&quot;</div></li><li><strong>08:00</strong><div>Наши новости</div></li><li><strong>09:00</strong><div>Наши новости</div></li><li><strong>09:05</strong><div>Воскресная проповедь</div></li><li><strong>09:20</strong><div>Сергей Жигунов, Анастасия Заворотнюк в комедийном сериале &quot;Моя прекрасная няня&quot;. Амедия (Россия) при участии Сони Пикчерс (США), 2004 год</div></li><li><strong>09:55</strong><div>Непутевые заметки</div></li><li><strong>10:15</strong><div>Пока все дома</div></li><li><strong>11:10</strong><div>Фазенда</div></li><li><strong>11:50</strong><div>Утренняя почта</div></li><li><strong>12:25</strong><div>Счастье есть!</div></li><li><strong>13:15</strong><div>Тележурнал &quot;Союз&quot;</div></li><li><strong>13:45</strong><div>Виктор Павлов. Судьба меня хранить устала</div></li></ul>

    Из него нужно вырезать время и название передачи. Со временем проблем не возникло, а вот с названием передачи сложнее. Так как в названии передачи могут присутствовать и русские и латинские буквы и цифры и знаки препинания, то сложно нормальную маску задать. Если делаю так (часть регулярки для поиска времени опустил):
    preg_match_all("/<div>(.+)<\/div>/", $v, $out_arr2);

    то в итоге получаю весь код между первым и последним дивом… Делаю вот так:
    preg_match_all("/<div>(\D+)<\/div>/", $v, $out_arr2);

    Получаю так как должно быть, но … \D - это всё, кроме чисел и я так понимаю, что если в названии передачи будет цифра, то выйдет лажа. Помогите плиз разрешить проблему, вроде как просто должно быть, но у меня уже мозг кипит.
  • Gromo

    Сообщения: 8 Репутация: N Группа: Кто попало

    Spritz 8 октября 2010 г. 11:25, спустя 51 минуту 48 секунд

    обычно за регуляркой следуют ключи.
    Всегда пользуюсь следующими:
    s - однострочный поиск, т.е. весь текст воспринимается в виде одной строки
    U - отмена жадности квантификаторов
    i - игнорирование регистра

    '#<div>(.+)</div>#sUi' - что-то вроде такого
  • truth4oll

    Сообщения: 463 Репутация: N Группа: Адекваты

    Spritz 8 октября 2010 г. 11:47, спустя 22 минуты 22 секунды

    можно заюзать
    http://simplehtmldom.sourceforge.net/
  • SHtoRM

    Сообщения: 22 Репутация: N Группа: Кто попало

    Spritz 8 октября 2010 г. 11:58, спустя 10 минут 49 секунд

    Спасибо, с ключами сработало как надо

Пожалуйста, авторизуйтесь, чтобы написать комментарий!