|
|
|
| Может, кто разьяснит?
Я хочу прочитать текст с удаленной страницы. Смотрел тему-грабер новостей.
Самый подходящий скрипт для этого
<?php
$bufer = file_get_contents("http://www.lenta.ru");
preg_match_all("|<p>([^<]*)</p>|i",$bufer,$out,PREG_PATTERN_ORDER);
foreach($out[1] as $ss)
{
echo $ss."<br><br>";
}
?>
Читал доки по php.
Непонятно- какое регулярное выражение должно стоять в кавычках в функции
preg_match_all ? В данном примере это |<p>([^<]*)</p>|i
то есть видимо все, что стоит между тегами <p> и </p>
А как сделать чтобы читалась статья к примеру с этой вот страницы-
http://pravoslavie.ru/news/050819014508? | |
|
|
|
|
|
|
|
для: ll
(21.08.2005 в 12:24)
| | Не всегда стоит зацикливаться на регулярных выражениях - они в основном применяются когда со страницы необходимо вытащить много повторяющихся элементов - у вас одно название и одна статья. Если название ещё целесообразно вытащить при помощи регулярных выражений, так как окружение может повторятся, то окружение статьи уникально и легко достаётся при помощи строковых функций
<?php
$bufer = file_get_contents("http://pravoslavie.ru/news/050819014508");
// Название
preg_match_all("|<td[^>]*><b>([^<]+)<|i",$bufer,$out,PREG_PATTERN_ORDER);
foreach($out[1] as $ss)
{
echo $ss."<br><br>";
}
// Текст
$pos_str = strpos($bufer,"<?xml:namespace prefix = st1 />");
$pos_end = strpos($bufer,"<!--autor-->");
echo substr($bufer,$pos_str, $pos_end - $pos_str);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.08.2005 в 13:08)
| | Да- спасибо огромное!
Опробовал -код работает, но вот только он в тексте и картинки вставляет-
и они неверно отображаются...
Как без картинок сделать? | |
|
|
|
|
|
|
|
для: ll
(21.08.2005 в 21:22)
| | Вот здесь уже целесообразно применить регулярные выражения
<?php
$bufer = file_get_contents("opr000JR.htm");
// Название
preg_match_all("|<td[^>]*><b>([^<]+)<|i",$bufer,$out,PREG_PATTERN_ORDER);
foreach($out[1] as $ss)
{
echo $ss."<br><br>";
}
// Текст
$pos_str = strpos($bufer,"<?xml:namespace prefix = st1 />");
$pos_end = strpos($bufer,"<!--autor-->");
$text = substr($bufer,$pos_str, $pos_end - $pos_str);
$text = preg_replace("|<IMG[^>]+>|i","",$text);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.08.2005 в 01:16)
| | Да-классно!
Спасибо!
Мне бы так научиться писать регулярные выражения.... | |
|
|
|
|
|
|
|
для: ll
(22.08.2005 в 18:42)
| | Вот помогите еще разок...
Хочу взять новость со страницы
http://blagoslovenie.msk.ru/publisher/index.php?option=com_content&task=view&id=887&Itemid=47
кактут написать ее вывод?
Писал
$bufer = file_get_contents("$link");
// Текст
$pos_str = strpos($bufer,"<tr><td valign=\"top\" colspan=\"2\">");
$pos_end = strpos($bufer,"</td></tr>");
$text = substr($bufer,$pos_str, $pos_end - $pos_str);
Но так не хочет...хоть и просто текст с уникальной страницы-но не берет...
Как написать в регулярных выражениях?
Еще хотелось бы брать анонсы новостей с картинками
со страницы
http://blagoslovenie.msk.ru/publisher/
Я делаю так- читаю rss канал скриптом- в нем раскладываю по title, description,
pubdate и т.д.- и потом вывожу или кладу в свою базу и уже из нее-вывожу...
но как сделать-чтобы прочитать description с картинками?
Заранее спасибо! | |
|
|
|
|
|
|
|
для: ll
(27.08.2005 в 11:19)
| | Не смотрите на мой код как на триптих :))) для разборки чужого HTML-кода, тем более сгенерированного PHP - это вредно. Дело в том, что между тэгом <tr> и <td valign=\"top\" colspan=\"2\"> находится первод строки и море пробелов, как в прочем и между </td> и </tr>. При подборе якорей, к которым вы будете привязываться, на этапе отладки обязательно следует выводить значения $pos_str и $pos_end - вслепую ничего не сделаете. $pos_str должно быть всегда больше $pos_end. Если окружение не уникально не нужно искать по большому куску текста, лучше последовательно приближаться к цели несколькими функциями strpos(), зацепляясь за строки, которые точно никогода не будут разделять переводом строки. Регулярные выражения можно применить, но здесь они будут громоздкими и в них очень легко ошибиться, гораздо проще выдрать текст следующим образом:
<?php
$bufer = file_get_contents("$link");
// Текст
$pos_str = strpos($bufer,"<td valign=\"top\" colspan=\"2\" class=\"createdate\">");
$pos_str = strpos($bufer,"<td valign=\"top\" colspan=\"2\">",$pos_str);
$pos_end = strpos($bufer,"</td>",$pos_str);
$text = substr($bufer,$pos_str, $pos_end - $pos_str);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(27.08.2005 в 13:40)
| | А как считать только 1 блок текса? Пытался разными вариантами это реализовать но ни чего не вышло.
<?php
$link = "http://blagoslovenie.msk.ru/publisher/index.php?option=com_content&task=view&id=887&Itemid=47";
$bufer = file_get_contents("$link");
// Текст
$pos_str = strpos($bufer[$i],"<P align=\"justif\">");
$pos_end = strpos($bufer,"</P>",$pos_str);
$text = substr($bufer,$pos_str, $pos_end - $pos_str);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: smertnik
(08.09.2005 в 05:08)
| | Один блок это первый параграф или имеется ввиду что-то другое? | |
|
|
|
|
|
|
|
для: cheops
(08.09.2005 в 12:55)
| | Только эту часть:
— Ваше Высокопреосвященство, при взгляде на систему ценностей, утвердившуюся в наши дни, верующих людей охватывает настоящая паника: многие уже впрямую говорят о том, что современная цивилизация неотвратимо катится к гибели, деморализация общества достигает всеохватных размеров. Что, по Вашему мнению, сегодня происходит с человеком, с его душой, с его ценностными ориентирами? Как Вы можете охарактеризовать духовное состояние нынешнего поколения?
|
| |
|
|
|
|
|
|
|
для: smertnik
(08.09.2005 в 13:02)
| | Это можно сделать при помощи следующего скрипта
<?php
$bufer = file_get_contents($link);
// Текст
$pos_str = strpos($bufer,"<td valign=\"top\" colspan=\"2\" class=\"createdate\">");
$pos_str = strpos($bufer,"<td valign=\"top\" colspan=\"2\">",$pos_str);
$pos_str = strpos($bufer,"<p align=\"justify\">",$pos_str);
$pos_end = strpos($bufer,"</p>",$pos_str);
$text = substr($bufer,$pos_str, $pos_end - $pos_str);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.09.2005 в 14:19)
| | Спасибо большое за обьяснение, хоть чего то стал понимать, а с регулярные чуствую еще очень долго буду разбираться. | |
|
|
|