Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Граббер телевизионной программы на PHP

Сообщения:  [1-10]    [11-20]   [21-30]  [31-31] 

 
 автор: Олег87   (27.11.2005 в 15:18)   письмо автору
 
   для: cheops   (27.11.2005 в 13:41)
 

>Это делается очень просто :))) В обязательном порядке
>достаётся книга [url =
>http://www.softtime.ru/article/index.php?id_article=62]Дж.
>Фридл "Регулярные выражения" [/url] - не очень
>простое чтение, но прочитать её следует несколько раз (хотя
>бы до середины :).

я её уже достал :) http://www.phpfaq.ru/files/friedl.rar ещё завтра в библиотеку схожу, возьму там, чтобы в оффлайне, перед сном читать :))

>Дело в том, что регулярные выражения являются мини-языком и
>подходить к их изучению следует именно с позиции изучения
>нового языка программирования. Т.е. с покупкой книг, их
>изучением, тренировкой - иначе всё это будет казаться вам
>магией :)))
>Усилий на их изучение требуется много - но они
>вам с лихвой окупятся - это всё равно что знать
>десятипальцевый метод.

Всё ясно :)

>PS Вы можете задавать в этом разделе любые вопросы по
>регулярным выражениям, всё что знаю - расскажу :)))

Это я уже понял когда в первый раз сюда зашел :)

   
 
 автор: cheops   (27.11.2005 в 13:41)   письмо автору
 
   для: Олег87   (26.11.2005 в 23:35)
 

Это делается очень просто :))) В обязательном порядке достаётся книга Дж. Фридл "Регулярные выражения" - не очень простое чтение, но прочитать её следует несколько раз (хотя бы до середины :). Однако этого не достаточно, необходима практика - например, можно выбрать форум и пытаться отвечать на все вопросы по регулярным выражениям, даже если кто-то приводит решение - всё-равно необходимо писать своё. Или как вариант пытаться при помощи их решать любую задачу на строковые функции, даже если сначала вам проще обойтись без регулярных выражений.

Дело в том, что регулярные выражения являются мини-языком и подходить к их изучению следует именно с позиции изучения нового языка программирования. Т.е. с покупкой книг, их изучением, тренировкой - иначе всё это будет казаться вам магией :))) Усилий на их изучение требуется много - но они вам с лихвой окупятся - это всё равно что знать десятипальцевый метод.

PS Вы можете задавать в этом разделе любые вопросы по регулярным выражениям, всё что знаю - расскажу :)))

   
 
 автор: Олег87   (26.11.2005 в 23:35)   письмо автору
 
   для: cheops   (26.11.2005 в 21:40)
 

прочитал все что есть про рег.выр., прочитал весь этот форум про РВ(кстати, я так много инфы как здесь нигде не встречал), скачал все твои примеры на этом форуме, cheops, и все-равно не могу понять как ты их составляшь..:)) поделись секретом..

   
 
 автор: cheops   (26.11.2005 в 21:40)   письмо автору
 
   для: Олег87   (26.11.2005 в 18:18)
 

| - означает границу регулярного выражения, вместо этого символа может быть любой другой, например, следующие регулярные выражения эквивалентны
|<div class=\"movie_f\">[\s]*<[^>]+>[\s]*<a href=\"([^\"]+)\">([\d]+:[\d]+)<[^>]+><[^>]+>[^>]+>[^>]+>(.*)</span>|isU
#<div class=\"movie_f\">[\s]*<[^>]+>[\s]*<a href=\"([^\"]+)\">([\d]+:[\d]+)<[^>]+><[^>]+>[^>]+>[^>]+>(.*)</span>#isU
/<div class=\"movie_f\">[\s]*<[^>]+>[\s]*<a href=\"([^\"]+)\">([\d]+:[\d]+)<[^>]+><[^>]+>[^>]+>[^>]+>(.*)<\/span>/isU


: - означает :, там просто время в формате ##:##

. - означает любой символ, если необходимо обозначать символ точки - его обязательно следует экранировать \.

isU - это Perl-модификаторы, i - это независимость от регистра, s - искать по всему тексту, а не до первого перевода строки, U - инвертирует жадность - вообще регулярные выражения по умолчанию жадные, т.е. ищут максимально длинное соответствие. Этот модификатор сообщает о том, что следует искать максимально короткие соответствия. Без модификатора U выражение .* лучше не использовать - ничего хорошего не выйдет.

   
 
 автор: Олег87   (26.11.2005 в 18:18)   письмо автору
 
   для: cheops   (26.11.2005 в 13:40)
 

не могли бы вы полностью объяснить вот эту строку:
|<div class=\"movie_f\">[\s]*<[^>]+>[\s]*<a href=\"([^\"]+)\">([\d]+:[\d]+)<[^>]+><[^>]+>[^>]+>[^>]+>(.*)</span>|isU
что оэначают знаки | : . isU

спасибо.

   
 
 автор: cheops   (26.11.2005 в 13:40)   письмо автору
 
   для: Axxil   (25.11.2005 в 20:12)
 

Можно использовать следующий скрипт
<?php 
  $text 
file_get_contents("http://tv.yandex.ru/?day=13107&hour=6&period=24&flag=&channel=103"); 
  
$pattern "|<div class=\"movie_f\">[\s]*<[^>]+>[\s]*<a href=\"([^\"]+)\">([\d]+:[\d]+)<[^>]+><[^>]+>[^>]+>[^>]+>(.*)</span>|isU"
  
preg_match_all($pattern,$text,$out);
  for(
$i 0$i count($out[1]); $i++) 
  { 
    echo 
"<a href=http://tv.yandex.ru".$out[1][$i].">".$out[2][$i]."</a> - ".$out[3][$i]."<br>"
  } 
?>

   
 
 автор: Axxil   (25.11.2005 в 20:12)   письмо автору
 
   для: cheops   (25.11.2005 в 18:26)
 

Нет с описанием мы же уже разобрались :)
А сейчас нужно из списка передач вытащить только фильмы, чтобы потом по ссылкам на которые они ведут можно было вытащить их описания.
Фильм маркируется картинкой и интуитивно мне кажется что проблем быть не должно, но к сожалению знаний для подтверждения интуиции не хватает :(

   
 
 автор: cheops   (25.11.2005 в 18:26)   письмо автору
 
   для: Axxil   (24.11.2005 в 13:57)
 

Хм... т.е имеется ввиду список передач, а не описание?

   
 
 автор: Axxil   (24.11.2005 в 13:57)   письмо автору
 
   для: cheops   (24.11.2005 в 13:04)
 

Так вот именно что нужно игнорировать не всю страницу, а только НЕ фильмы. Может быть в здоровенной программе быть один всего фильм (теоретически).
Может это можно как-то в цикле делать, или возможно регулярное выражение фильтрующее таким образом?

   
 
 автор: cheops   (24.11.2005 в 13:04)   письмо автору
 
   для: Axxil   (24.11.2005 в 09:16)
 

2) Можно предварительно искать вхождение указанной строк и <img ...> при помощи обычных строковых функций - если она есть - парсим, если нет, игнорируем страницу.

   

Сообщения:  [1-10]    [11-20]   [21-30]  [31-31] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования