ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Php: Rss/xml Парсер - Может кому надо
  #1  
Старый 20.04.2006, 16:56
Аватар для Utochka
Utochka
Постоянный
Регистрация: 21.12.2005
Сообщений: 620
Провел на форуме:
1867718

Репутация: 268


По умолчанию Php: Rss/xml Парсер - Может кому надо

PHP код:
<?php
$lenta 
$_GET['lenta'];
$xmlfile $_GET['xmlfile'];

set_time_limit(0);

$file "http://$lenta/$xmlfile";
$rss_channel = array();
$currently_writing "";
$main "";
$item_counter 0;
function 
startElement($parser$name$attrs) {
       global 
$rss_channel$currently_writing$main;
       switch(
$name) {
           case 
"RSS":
           case 
"RDF:RDF":
           case 
"ITEMS":
               
$currently_writing "";
               break;
           case 
"CHANNEL":
               
$main "CHANNEL";
               break;
           case 
"IMAGE":
               
$main "IMAGE";
               
$rss_channel["IMAGE"] = array();
               break;
           case 
"ITEM":
               
$main "ITEMS";
               break;
           default:
               
$currently_writing $name;
               break;
       }
}
function 
endElement($parser$name) {
       global 
$rss_channel$currently_writing$item_counter;
       
$currently_writing "";
       if (
$name == "ITEM") {
           
$item_counter++;
       }
}
function 
characterData($parser$data) {
    global 
$rss_channel$currently_writing$main$item_counter;
    if (
$currently_writing != "") {
        switch(
$main) {
            case 
"CHANNEL":
                if (isset(
$rss_channel[$currently_writing])) {
                    
$rss_channel[$currently_writing] .= $data;
                } else {
                    
$rss_channel[$currently_writing] = $data;
                }
                break;
            case 
"IMAGE":
                if (isset(
$rss_channel[$main][$currently_writing])) {
                    
$rss_channel[$main][$currently_writing] .= $data;
                } else {
                    
$rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case 
"ITEMS":
                if (isset(
$rss_channel[$main][$item_counter][$currently_writing])) {
                    
$rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    
//print ("rss_channel[$main][$item_counter][$currently_writing] = $data");
                    
$rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}
$xml_parser xml_parser_create();
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
if (!(
$fp fopen($file"r"))) {
    die(
"could not open XML input");
}
while (
$data fread($fp4096)) {
    if (!
xml_parse($xml_parser$datafeof($fp))) {
        die(
sprintf("XML error: %s at line %d",
                    
xml_error_string(xml_get_error_code($xml_parser)),
                    
xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
if (isset(
$rss_channel["ITEMS"])) {
    if (
count($rss_channel["ITEMS"]) > 0) {
        for(
$i 0;$i count($rss_channel["ITEMS"]);$i++) {
            
$title $rss_channel["ITEMS"][$i]["TITLE"];
            
$dest $rss_channel["ITEMS"][$i]["DESCRIPTION"];
//  Тут можно сделать вывод на страницу, или ввод в БД
// $rss_channel["ITEMS"][$i]["элемент"];
        
}
    } else {
        print (
"<b>Нет ничего.</b>");
    }
}
exit;
?>
 
Ответить с цитированием

  #2  
Старый 23.04.2006, 17:33
Аватар для Talisman
Talisman
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме:
1325772

Репутация: 517


Отправить сообщение для Talisman с помощью ICQ
По умолчанию

Вери биг сенкс! (уже сам половину написал, и тут твою нашел )
 
Ответить с цитированием

  #3  
Старый 23.04.2006, 17:58
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

ой, а не легче ли просто сделать так:

PHP код:
<?php 
/* 
====================================================================== 
lastRSS usage DEMO 3 - Simple RSS agregator 
---------------------------------------------------------------------- 
This example shows, how to create simple RSS agregator 
    - create lastRSS object 
    - set transparent cache 
    - show a few RSS files at once 
====================================================================== 
*/ 

function ShowOneRSS($url) { 
    global 
$rss
    if (
$rs $rss->get($url)) { 
        echo 
"<big><b><a href=\"$rs[link]\">$rs[title]</a></b></big><br />\n"
        echo 
"$rs[description]<br />\n"

            echo 
"<ul>\n"
            foreach (
$rs['items'] as $item) { 
                echo 
"\t<li><a href=\"$item[link]\" title=\"$item[description]\">$item[title]</a></li>\n"
            } 
            if (
$rs['items_count'] <= 0) { echo "<li>Sorry, no items found in the RSS file :-(</li>"; } 
            echo 
"</ul>\n"
    } 
    else { 
        echo 
"Sorry: It's not possible to reach RSS file $url\n<br />"
        
// you will probably hide this message in a live version 
    



// =============================================================================== 

// include lastRSS 
include "./lastRSS.php"

// List of RSS URLs 
$rss_left = array( 
    
'http://freshmeat.net/backend/fm.rdf'
    
'http://slashdot.org/slashdot.rdf' 
); 
$rss_right = array( 
    
'http://www.freshfolder.com/rss.php'
    
'http://phpbuilder.com/rss_feed.php' 
); 

// Create lastRSS object 
$rss = new lastRSS

// Set cache dir and cache time limit (5 seconds) 
// (don't forget to chmod cahce dir to 777 to allow writing) 
$rss->cache_dir './temp'
$rss->cache_time 1200


// Show all rss files 
echo "<table cellpadding=\"10\" border=\"0\"><tr><td width=\"50%\" valign=\"top\">"
foreach (
$rss_left as $url) { 
    
ShowOneRSS($url); 

echo 
"</td><td width=\"50%\" valign=\"top\">"
foreach (
$rss_right as $url) { 
    
ShowOneRSS($url); 

echo 
"</td></tr></table>"
?>
 
Ответить с цитированием

  #4  
Старый 23.04.2006, 18:01
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

lastRSS - зачотный модуль )
 
Ответить с цитированием

  #5  
Старый 26.04.2006, 04:17
Аватар для Trinux
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме:
941818

Репутация: 569


По умолчанию

Цитата:
lastRSS - зачотный модуль )
ну ну =)))
http://ru.php.net/manual/ru/ref.xml.php
 
Ответить с цитированием

  #6  
Старый 28.04.2006, 21:22
Аватар для Talisman
Talisman
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме:
1325772

Репутация: 517


Отправить сообщение для Talisman с помощью ICQ
По умолчанию

Цитата:
Сообщение от Trinux  
люди... а где этот... lastRSS взять то??? подскажите, плиз..
 
Ответить с цитированием

  #7  
Старый 28.04.2006, 21:35
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Talisman, докатились. Вбей в гугл это слово и нажми на первую ссылку.
 
Ответить с цитированием

  #8  
Старый 28.04.2006, 21:38
Аватар для Trinux
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме:
941818

Репутация: 569


По умолчанию

Цитата:
люди... а где этот... lastRSS взять то??? подскажите, плиз..
2-мя постами выше =)))))))))))))))))))))))))))))))
 
Ответить с цитированием

  #9  
Старый 28.04.2006, 21:57
Аватар для Talisman
Talisman
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме:
1325772

Репутация: 517


Отправить сообщение для Talisman с помощью ICQ
По умолчанию

Цитата:
Сообщение от nerezus  
Talisman, докатились. Вбей в гугл это слово и нажми на первую ссылку.
Спасибо а я не в первую тыкал... т.е. не сразу нашел http://lastrss.webdot.cz/
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31
МуЖыКи НаДо ПрЕкРаЩаТь БеСпРеДеЛ ЧаТа newboltalka† Чаты 1 06.07.2003 17:59



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ