|
|
|
| http://www.samsung.ru/press/awards/news.rss вот РСС, помогите сграбить всё что там есть, я делаю так
<?
$text2 = file_get_contents ("http://www.samsung.ru/press/clipping/news.rss");
if (preg_match ("#<title>'(.*)'</title><link>(.*)</link><description>(.*)</description><pubDate>(.*)</pubDate>#isU", $text2, $out))
$text="$out[1]";
|
но не получается, просто не чег оен выводит :(
умоляю помогите, а то какрас сайт про самсунги делаю и вот рсс не помешалбы | |
|
|
|
|
|
|
|
для: Panker
(18.10.2006 в 09:05)
| |
<?
if (preg_match ("#<title>(.*)</title>.*<link>(.*)</link>.*<description>(.*)</description>.*<pubDate>(.*)</pubDate>#isU", $text2, $out))
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(18.10.2006 в 11:26)
| | я вот так вот делаю
<?
$text2 = file_get_contents ("http://www.samsung.ru/press/news/news.rss");
if (preg_match ("#<title>(.*)</title>.*<link>(.*)</link>.*<description>(.*)</description>.*<pubDate>(.*)</pubDate>#isU", $text2, $regs))
{
for ($i = 0; $i < count($regs[1])-10; $i++)
{
$title_rss = trim ($regs[1][$i]);
$link_rss = trim ($regs[2][$i]);
$des_rss = trim ($regs[3][$i]);
$pub_rss = trim ($regs[4][$i]);
$text2 = file_get_contents ("http://www.samsung.ru/press/news/news.rss");
if (preg_match ("#<title>(.*)</title>.*<link>(.*)</link>.*<description>(.*)</description>.*<pubDate>(.*)</pubDate>#isU", $text2, $out))
$text="$out[1]";
}
}
|
это у меня типа вывод :) шаблонизатор самый простой, инклуд шаблона делаю а там просто в нужных местах переменые которые выводят ))
так вот делаю как выше, думает долго но не чего не выводит, где я опять ошибся ? (
я прсото в этом не понимаю не чего, где то взял у кого то а до конца не разобрался | |
|
|
|
|
|
|
|
для: Panker
(18.10.2006 в 11:40)
| | Хе-хе, узнаю скрипт :)
Вот примерно так:
<?
$text2 = file_get_contents ("http://www.samsung.ru/press/news/news.rss");
if (preg_match_all ("#<item>.*<title>(.*)</title>.*<link>(.*)</link>.*<description>(.*)</description>.*<pubDate>(.*)</pubDate>.*</item>#isU", $text2, $regs))
{
for ($i = 0; $i < count($regs[1]); $i++)
{
$title_rss = iconv("UTF-8", "WINDOWS-1251", trim($regs[1][$i]));
$link_rss = trim ($regs[2][$i]);
$des_rss = iconv("UTF-8", "WINDOWS-1251", trim ($regs[3][$i]));
$pub_rss = trim ($regs[4][$i]);
$text2 = file_get_contents ($link_rss);
if (preg_match ('#</noindex></div><h1 class="news"><noindex>.*</noindex></h1>(<p>.*)<br clear="all"><table cellpadding="0" cellspacing="0" border="0" width="610">#isU', $text2, $out))
$text=$out[1];
}
}
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(19.10.2006 в 07:31)
| | ошибка - Fatal error: Call to undefined function: iconv() in z:\home\setka\www\samsung\1news.php on line 13
на этой строке
$title_rss = iconv("UTF-8", "WINDOWS-1251", trim($regs[1][$i]));
|
сори я сам не могу понять что там не так.. ( | |
|
|
|
|
|
|
|
для: Panker
(19.10.2006 в 09:14)
| | Подключите расширение iconv() в PHP. | |
|
|
|
|
|
|
|
для: cheops
(19.10.2006 в 12:57)
| | ааааа...простите ? как это сделать? :) | |
|
|
|
|
|
|
|
для: Panker
(19.10.2006 в 14:47)
| | Раскомментируйте библиотеку php_iconv.dll в конфигурационном файле php.ini. | |
|
|
|
|
|
|
|
для: cheops
(19.10.2006 в 23:01)
| | блин :( Хеопс, простите я чёто не допонимаю :) раскоментруй прокоментируй :( можно как для дурака обьясниь ? ) | |
|
|
|
|
|
|
|
для: Panker
(20.10.2006 в 09:22)
| | Так значит :)
скачал я эти библиотеки, всё заработала на денвере:)
теперь осталось несоклько вопросов!
1 как выводит по одной новости с RSS что бы мне было удобней писать 1 новость в одну базу
или как правельней было бы писать?
2 Как мне заменить адрес рисунка, когда грабится адрес рисунка становится i/risunok/asd.JPG
как мне подставить перед этим адрес http://www.samsung.ru ?
На счёт записи
Я думаю химичить тут надо?
$text2 = file_get_contents ("http://www.samsung.ru/press/news/news.rss");
if (preg_match_all ("#<item>.*<title>(.*)</title>.*<link>(.*)</link>.*<description>(.*)</description>.*<pubDate>(.*)</pubDate>.*</item>#isU", $text2, $regs))
{
for ($i = 0; $i < count($regs[1]); $i++)
{
$title_rss = iconv("UTF-8", "WINDOWS-1251", trim($regs[1][$i]));
$link_rss = trim ($regs[2][$i]);
$des_rss = iconv("UTF-8", "WINDOWS-1251", trim ($regs[3][$i]));
$pub_rss = trim ($regs[4][$i]);
|
но как их по очереди записывать?
или выводит просто не все а только первую запись и при появлении новосй записи она будет писатся и так всё по очереди?
так? нет?
и если так то как мне выводить не все записи а только первую? | |
|
|
|
|
|
|
|
для: Panker
(20.10.2006 в 09:31)
| | Хм... просто формируйте из результатов разбора INSERT и тут же его выполняйте
<?php
for ($i = 0; $i < count($regs[1]); $i++)
{
$title_rss = iconv("UTF-8", "WINDOWS-1251", trim($regs[1][$i]));
$link_rss = trim ($regs[2][$i]);
$des_rss = iconv("UTF-8", "WINDOWS-1251", trim ($regs[3][$i]));
$pub_rss = trim ($regs[4][$i]);
$text2 = file_get_contents ($link_rss);
if (preg_match ('#</noindex></div><h1 class="news"><noindex>.*</noindex></h1>(<p>.*)<br clear="all"><table cellpadding="0" cellspacing="0" border="0" width="610">#isU', $text2, $out))
$text=$out[1];
$query = "INSERT INTO tbl VALUES (NULL, '$title_rss', ....)"; // Здесь следует сформировать запрос под вашу таблицу
mysql_query($query);
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.10.2006 в 12:54)
| | ага, ща попробую :) | |
|
|
|
|
|
|
|
для: Panker
(20.10.2006 в 12:58)
| | всё бы было бы хорошо, нопростите... как мне исключить запись тех страниц котоыре я уже записывал? а то при каждом запуски скрипта пишется всё по новой и получаются 1000 новостей их них 10 разных :( | |
|
|
|
|
|
|
|
для: Panker
(20.10.2006 в 14:03)
| | Новости имеют какой-то уникальный параметр? Время, например, или ещё что-то? | |
|
|
|
|
|
|
|
для: cheops
(20.10.2006 в 15:59)
| | время у них там везде 0000000 по нулям :(
типа так
<pubDate>Tue, 17 Oct 2006 00:00:00 GMT</pubDate>
<pubDate>Tue, 17 Oct 2006 00:00:00 GMT</pubDate>
<pubDate>Tue, 17 Oct 2006 00:00:00 GMT</pubDate>
тока даты меняются типа восенадцатого числа и так алее | |
|
|
|
|
|
|
|
для: Panker
(20.10.2006 в 16:03)
| | А названия или ссылки на новости уникальны? Вы только самсунговский RSS используете или ещё чей-нибудь? | |
|
|
|
|
|
|
|
для: cheops
(20.10.2006 в 18:11)
| | да, только самсунг, прсото сайт о самсунге, делаю для самсунг...
а вот на счёт названий и так далее, они естесвеннро оригенальные :)
вот только как првоерить есть ли они в базе и если есть не записывать и наабарот не знаю, мне же прилдётся всю базу сверять и так далее...
если есть какойнить способ не грамозкий :) подскажите :)
а то я пока только ip адреса научился сверять и то кое как :) | |
|
|
|
|
|
|
|
для: Panker
(20.10.2006 в 18:31)
| | up | |
|
|
|
|
|
|
|
для: Panker
(21.10.2006 в 22:45)
| | аушки :) так как мне сравнить что бы не записовалось :( | |
|
|
|
|
|
|
|
для: Panker
(20.10.2006 в 18:31)
| | Судя по всему в RSS используется уникальный URL перед добавлением можно проверять нет ли записи с таким URL в таблице tbl, если такой записи нет - добавлять новую, если есть - не добавлять. Для проверки можно осуществлять отдельный SELECT-запрос, а можно проиндексировать поле URL, создав уникальный индекс. Тогда запись с уже существующим URL не будет добавляться автоматически. Только индексировать придётся по всему полю, так как изменения в URL наблюдаются в конце URL. | |
|
|
|
|
|
|
|
для: cheops
(22.10.2006 в 12:22)
| | мона проверить есть ли это или нет, ну эт вы сказали выше :) я прсото хочу просить -
вот тут я првоеряю уникальных посетителей
$res = mysql_query ("SELECT COUNT(DISTINCT s_ip) FROM stat_user");
|
вот по такому принципу проверять поля урл?
или как?
и если по такому то вот так вот нормально ?
- $res = mysql_query ("SELECT COUNT(DISTINCT link) FROM news"); - тут будет проверятся уникальная ссылка? :(
и если да то это всё в иф засунуть ? | |
|
|
|
|
|
|
|
для: Panker
(22.10.2006 в 13:26)
| | У вас URL будет известен за ранее, поэтому запрос должен выглядеть следующим образом
<?php
$res = mysql_query ("SELECT COUNT(link) FROM news WHERE link = '$link'");
if(!$res) exit(mysql_error());
$total = mysql_result($res, 0);
?>
|
Если $total = 0 - такой записи нет, если $total = 1, такая запись уже существует и вставлять её повторно не следует. | |
|
|
|
|
|
|
|
для: cheops
(22.10.2006 в 14:35)
| | простите
делал вроде точней сделал вроде бы всё правельно!
полный код ниже представлю, сначала расскауж :)
Вроде бы сделано всё ок НО ВСЕГДА ВЫВОДИТСЯ НОЛЬ!
Проверил вывести перед проверкой ССЫЛКИ типа echo "$rss_link"; все ссылки вывелись, дальше сверяю как вы показали, и всегда выводится десять нулей, ну типа десять нвоостей в данный момент там :(
отд код, что не так?
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
include "config.php";
$text2 = file_get_contents ("http://www.samsung.ru/press/news/news.rss");
if (preg_match_all ("#<item>.*<title>(.*)</title>.*<link>(.*)</link>.*<description>(.*)</description>.*<pubDate>(.*)</pubDate>.*</item>#isU", $text2, $regs))
{
for ($i = 0; $i < count($regs[1]); $i++)
{
$title_rss = iconv("UTF-8", "WINDOWS-1251", trim($regs[1][$i]));
$link_rss = trim ($regs[2][$i]);
$des_rss = iconv("UTF-8", "WINDOWS-1251", trim ($regs[3][$i]));
$pub_rss = trim ($regs[4][$i]);
}
}
for ($i = 0; $i < count($regs[1]); $i++)
{
$title_rss = iconv("UTF-8", "WINDOWS-1251", trim($regs[1][$i]));
$link_rss = trim ($regs[2][$i]);
$des_rss = iconv("UTF-8", "WINDOWS-1251", trim ($regs[3][$i]));
$pub_rss = trim ($regs[4][$i]);
$res = mysql_query ("SELECT COUNT(link) FROM news WHERE link = '$link_rss'");
if(!$res) exit(mysql_error());
$total = mysql_result($res, 0);
echo "$total";
$text2 = file_get_contents ($link_rss);
if (preg_match ('#</noindex></div><h1 class="news"><noindex>.*</noindex></h1>(<p>.*)<br clear="all"><table cellpadding="0" cellspacing="0" border="0" width="610">#isU', $text2, $out))
$text=$out[1];
if($total==0)
{
$query = "INSERT INTO news VALUES ('', '$title_rss', '$des_rss', '$pub_rss', '$link_rss')"; // Здесь следует сформировать запрос под вашу таблицу
mysql_query($query);
}
}
?>
|
малоли, вот таблица моя
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`title` text NOT NULL,
`text` text NOT NULL,
`link` text NOT NULL,
`data` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
--
-- Дамп данных таблицы `news`
--
|
| |
|
|
|
|
|
|
|
для: Panker
(22.10.2006 в 17:41)
| | >десять нвоостей в данный момент там :(
0 означает, что новости в данный момент нет, т.е. имеется ввиду, что 0 выводится даже после того, как новостная позиция добавлена в базу данных? | |
|
|
|
|
|
|
|
для: Panker
(22.10.2006 в 17:41)
| | Хм... у вас странно вставляется запись в таблицу news, поле link у вас предпоследнее, а вставляете вы $link_rss в последнее поле, поэтому скрипт и не находит старый URL, так как он ложиться в соседнее поле. | |
|
|
|
|
|
|
|
для: cheops
(23.10.2006 в 02:34)
| | чёт я нечё не понел :)
что делать то ? :)
что то перекладывать или как)) | |
|
|
|
|
|
|
|
для: Panker
(23.10.2006 в 08:27)
| | Следует изменить INSERT-запрос
<?php
$query = "INSERT INTO news VALUES ('', '$title_rss', '$des_rss', '$pub_rss', '$link_rss')";
?>
|
таким образом, чтобы в последнем поле была дата, а URL в переменной $link_rss - ложился на своё место, а не поле date. | |
|
|
|
|
|
|
|
для: cheops
(23.10.2006 в 12:28)
| | дауж :( что то я запутался, да там и не трудно запутатся :( всё как то через .... делал вот и запутался :)
большое спасибо всё хорошо работает :) | |
|
|
|