|
|
|
|
|
для: 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 Вы можете задавать в этом разделе любые вопросы по
>регулярным выражениям, всё что знаю - расскажу :)))
Это я уже понял когда в первый раз сюда зашел :) | |
|
|
|
|
|
|
|
для: Олег87
(26.11.2005 в 23:35)
| | Это делается очень просто :))) В обязательном порядке достаётся книга Дж. Фридл "Регулярные выражения" - не очень простое чтение, но прочитать её следует несколько раз (хотя бы до середины :). Однако этого не достаточно, необходима практика - например, можно выбрать форум и пытаться отвечать на все вопросы по регулярным выражениям, даже если кто-то приводит решение - всё-равно необходимо писать своё. Или как вариант пытаться при помощи их решать любую задачу на строковые функции, даже если сначала вам проще обойтись без регулярных выражений.
Дело в том, что регулярные выражения являются мини-языком и подходить к их изучению следует именно с позиции изучения нового языка программирования. Т.е. с покупкой книг, их изучением, тренировкой - иначе всё это будет казаться вам магией :))) Усилий на их изучение требуется много - но они вам с лихвой окупятся - это всё равно что знать десятипальцевый метод.
PS Вы можете задавать в этом разделе любые вопросы по регулярным выражениям, всё что знаю - расскажу :))) | |
|
|
|
|
|
|
|
для: cheops
(26.11.2005 в 21:40)
| | прочитал все что есть про рег.выр., прочитал весь этот форум про РВ(кстати, я так много инфы как здесь нигде не встречал), скачал все твои примеры на этом форуме, cheops, и все-равно не могу понять как ты их составляшь..:)) поделись секретом.. | |
|
|
|
|
|
|
|
для: Олег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 выражение .* лучше не использовать - ничего хорошего не выйдет. | |
|
|
|
|
|
|
|
для: cheops
(26.11.2005 в 13:40)
| | не могли бы вы полностью объяснить вот эту строку:
|<div class=\"movie_f\">[\s]*<[^>]+>[\s]*<a href=\"([^\"]+)\">([\d]+:[\d]+)<[^>]+><[^>]+>[^>]+>[^>]+>(.*)</span>|isU
что оэначают знаки | : . isU
спасибо. | |
|
|
|
|
|
|
|
для: 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>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(25.11.2005 в 18:26)
| | Нет с описанием мы же уже разобрались :)
А сейчас нужно из списка передач вытащить только фильмы, чтобы потом по ссылкам на которые они ведут можно было вытащить их описания.
Фильм маркируется картинкой и интуитивно мне кажется что проблем быть не должно, но к сожалению знаний для подтверждения интуиции не хватает :( | |
|
|
|
|
|
|
|
для: Axxil
(24.11.2005 в 13:57)
| | Хм... т.е имеется ввиду список передач, а не описание? | |
|
|
|
|
|
|
|
для: cheops
(24.11.2005 в 13:04)
| | Так вот именно что нужно игнорировать не всю страницу, а только НЕ фильмы. Может быть в здоровенной программе быть один всего фильм (теоретически).
Может это можно как-то в цикле делать, или возможно регулярное выражение фильтрующее таким образом? | |
|
|
|
|
|
|
|
для: Axxil
(24.11.2005 в 09:16)
| | 2) Можно предварительно искать вхождение указанной строк и <img ...> при помощи обычных строковых функций - если она есть - парсим, если нет, игнорируем страницу. | |
|
|
|
|