Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 12
1

RSS лента на сайте с другого сайта

06.04.2013, 22:28. Просмотров 4204. Ответов 4
Метки нет (Все метки)


Вообщем, покопался в интернете, нашел код который мне нужен, но дело в том, что он выводит все новости в rss, а хотелось бы что бы выводил к примеру 8 последних.
Вот сам код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 <?php
/**********************************************************
 * Parse XML data into an array structure                 *
 * Usage: array parse_rss ( string data )                 *
 **********************************************************/
function parse_rss($reg_exp, $xml_data) {
    preg_match_all($reg_exp, $xml_data, $temp);
    return array(
        'count'=>count($temp[0]),
        'title'=>$temp[1],
        'link'=>$temp[2],
        'desc'=>$temp[3]
    );
}
 
/**********************************************************
 * Parse Array data into an HTML structure                *
 * Usage: string parse_rss ( array data )                 *
 **********************************************************/
function output_rss($pattern, $rss_data) {
    for($i=0; $i<$rss_data['count']; $i++) {
        $temp .= sprintf($pattern,
            $rss_data['link'][$i],
            html_entity_decode($rss_data['title'][$i]),
            html_entity_decode($rss_data['desc'][$i])
        );
    }
    return $temp;
}
 
/**********************************************************
 * Settings                                               *
 **********************************************************/
$url = 'http://igeek.ru/feed';
 
$reg_exp  = '#<item>.*?<title>(.*?)<\/title>.*?';
$reg_exp .='<link>(.*?)<\/link>.*?<description>';
$reg_exp .='(.*?)<\/description>.*?<\/item>#si';
 
$pattern = '<a href="%s">%s</a><br>%s<hr>';
 
/**********************************************************
 * Main script                                            *
 **********************************************************/
if ( $xml_data = file_get_contents($url) ) {
    $rss_data = parse_rss($reg_exp, $xml_data);
    echo output_rss($pattern, $rss_data);
}
/**********************************************************
 * The END                                                *
 **********************************************************/
?>
Прошу помочь кто знает как это сделать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2013, 22:28
Ответы с готовыми решениями:

RSS лента сайта
https://habrahabr.ru/top/monthly/ - по этой ссылке расположено много постов, которые располагаются...

RSS с другого сайта!
Здравствуйте! Я не программист, к сожалению, знаю только основы разметки html и css. С JS и PHP...

RSS-лента
Люди никто не имел опыта в написании RSS-ленты?? просто мне необходимо в ней отображать последние...

RSS лента
Здравствуйте! сделал RSS ленту вроде все как пишет книга, во всех браузерах работает кроме Chrom...

4
:)
134 / 134 / 31
Регистрация: 30.03.2013
Сообщений: 428
07.04.2013, 00:20 2
Держи
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
header('Content-Type: text/html; charset=utf-8');
/**********************************************************
 * Parse XML data into an array structure                 *
 * Usage: array parse_rss ( string data )                 *
 **********************************************************/
function parse_rss($reg_exp, $xml_data) {
    preg_match_all($reg_exp, $xml_data, $temp);
    return array(
        'count'=>count($temp[0]),
        'title'=>$temp[1],
        'link'=>$temp[2],
        'desc'=>$temp[3]
    );
}
 
/**********************************************************
 * Parse Array data into an HTML structure                *
 * Usage: string parse_rss ( array data )                 *
 **********************************************************/
function output_rss($pattern, $rss_data, $count_latest) {
    $temp = null;
    for($i = 0; $i < $count_latest; $i++) {
        $temp .= sprintf($pattern,
            $rss_data['link'][$i],
            html_entity_decode($rss_data['title'][$i]),
            html_entity_decode($rss_data['desc'][$i])
        );
    }
    return $temp;
}
 
/**********************************************************
 * Settings                                               *
 **********************************************************/
$url = 'http://igeek.ru/feed';
 
$reg_exp  = '#<item>.*?<title>(.*?)<\/title>.*?';
$reg_exp .='<link>(.*?)<\/link>.*?<description>';
$reg_exp .='(.*?)<\/description>.*?<\/item>#si';
 
$pattern = '<a href="%s">%s</a><br>%s<hr>';
 
/**********************************************************
 * Main script                                            *
 **********************************************************/
if ( $xml_data = file_get_contents($url) ) {
    $rss_data = parse_rss($reg_exp, $xml_data);
    echo output_rss($pattern, $rss_data, 8);
}
/**********************************************************
 * The END                                                *
 **********************************************************/
Добавил 3-й параметр в функцию output_rss() для вывода последних добавленных RSS-новостей: echo output_rss($pattern, $rss_data, 8); Нужно просто указать нужное кол-во
Указал кодировку, а то некоторые браузеры не могут определить кодировку выходных данных (например, у меня вывелись крякозёбры ).
Исправил недочеты

P.S. Если хочешь, могу дописать код вывода первых нескольких (указанных) добавленных RSS-новостей
0
990 / 514 / 102
Регистрация: 19.03.2013
Сообщений: 3,113
Записей в блоге: 19
20.07.2013, 21:53 3
Цитата Сообщение от PlumBoom Посмотреть сообщение
Если хочешь, могу дописать код вывода первых нескольких (указанных) добавленных RSS-новостей
Привет. Я очень хочу!
Как раз думаю, как мне лучше забрать только нужные rss.

У меня есть приложение на Android, которое парсит rss-ленту. Но я не знаю, как в Java забрать только несколько Item из всей ленты, не качая всю ленту в httpget

Поэтому думаю сделать свой сайт, который будет выдавать нужное количество rss элементов по запросу. Вот пригодилось бы.
0
:)
134 / 134 / 31
Регистрация: 30.03.2013
Сообщений: 428
20.07.2013, 22:01 4
Цитата Сообщение от PlumBoom Посмотреть сообщение
Добавил 3-й параметр в функцию output_rss() для вывода последних добавленных RSS-новостей: echo output_rss($pattern, $rss_data, 8); Нужно просто указать нужное кол-во
Ничего сложного: сделать противоположно. В принципе код готовый... Необходимо только немного изменить... Пробуйте думать сами, начните понимать работу... Когда поймете, сможете написать всё, что захотите. Иначе, вы ничему не научитесь
0
990 / 514 / 102
Регистрация: 19.03.2013
Сообщений: 3,113
Записей в блоге: 19
21.07.2013, 21:30 5
PlumBoom, спасибо, gtfo
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2013, 21:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

RSS лента
Здравствуйте помогите мне пожалуйста. Я хочу сделать RSS ленту для сайта. Как я думаю при...

RSS лента
Дружетсвеный вебсайт предлагает мне раместить мою RSS ленту с полнотектсовыми новостями у себя. Он...

RSS лента
Друзья, пожалуйста подскажите как починить rss ленту. По незнанию ковырялась и удалила код в...

RSS лента
Здравствуйте 1)вот например моя Rss лента зарегестрирована на http://feeds.feedburner.com/my_site...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.