zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden [PHP] Magpie RSS

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 09.12.2008, 11:05
ESD ESD ist offline
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 02.12.2008
Beiträge: 11
ESD befindet sich auf einem aufstrebenden Ast
Standard [PHP] Magpie RSS

Hallo,
ich habe ein immer größer werdendes Problem und zwar mit Magpie RSS (Magpie RSS - PHP RSS Parser ). Das Tool ist ja wirklich Klasse, aber wenn der Cache geschrieben wird braucht das Magpie RSS gerne einmal 30 Sekunden bis zum Aufruf der index.php.

Bisher rufe ich immer:
PHP-Code:
            <h2>Neues im Blog</h2><br />
            <ul class="news">
            <?php
            
require_once('inc/rss_fetch.inc');
            
define('MAGPIE_OUTPUT_ENCODING''UTF-8');
            
define('MAGPIE_INPUT_ENCODING''UTF-8');
            
define('MAGPIE_DETECT_ENCODING'false);
            
$url "http://feeds.feedburner.com/blog";
            if(
$url != "") {
            
$num_items 9;
            
$rss = @fetch_rss($url);
            
$channeltitel $rss->channel['title'];
            
$restchannel substr("$channeltitel"039);
            
$items = @array_slice($rss->items0$num_items);
            if(!empty(
$items)) {
            foreach ( 
$items as $item ) {
            
$title $item['title'];
            
$href $item['link'];
            
$desc $item['description'];
            
$resttitle substr("$title"049);
            
$restdesc substr("$desc"0118);
            echo 
"<li><strong><a href=\"$href\" >$resttitle</a></strong></li>";
            } } }
            
?>
            </ul>
Und das nur um den Titel mit Url auszugeben. Hat jemand von euch hier einen Anwendungstrick? Ein Bekannter erzählt das PHP5 direkt RSS händeln kann ich habe hierzu leider keine Docs gefunden.

Danke
ESD
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 09.12.2008, 13:19
Benutzerbild von Pablo
4 8 15 16 23 42
XHTMLforum-Kenner
 
Registriert seit: 31.05.2004
Beiträge: 1.772
Pablo sorgt für eine eindrucksvolle AtmosphärePablo sorgt für eine eindrucksvolle Atmosphäre
Standard

Hi,

versuch zu aller erst mal auf SimplePIE umzusteigen, wenn es nicht zuu viele Mühen macht, da das der Nachfolger von Magpie RSS ist und auch als einziges von beiden weiterentwickelt wird.

Ein Versuch wäre, den Cache mal zu leeren, falls Magpie RSS das nicht selbstständig hin und wieder tut.
Interessant wäre auch zu wissen, wie lang das Script braucht, wenn du den Cache (testweise!) ausstellst.. Dann kann man relativ sicher herausfinden, ob es wirklich nur am Cache liegt.

PHP5 kann von Haus aus mit XML (siehe SimpleXML bei php.net) umgehen, mit RSS gibt es jedoch dann und wann Probleme (z.B. um das Datum aus <dc:date></dc:date> herauszufischen bedarf es mehrerer Schritte, anstatt einfach darauf zuzugreifen wie bei SimplePie) und SimpleXML ist bei weitem nicht so leistungsstark wie SimplePie (was aber auch nicht immer benötigt wird...)

Gruß,
Pablo
__________________
Go Opera!
… oder Chrome. Auch cool.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 10.12.2008, 08:48
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Was bei dir schief läuft, kann ich dir auf Anhieb auch nicht sagen. Am Cache von Magpie RSS liegt es aber eher nicht, da ich den auch nutze und der bei mir keinen Einfluss auf die Geschwindigkeit hat.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #4 (permalink)  
Alt 11.12.2008, 14:09
ESD ESD ist offline
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 02.12.2008
Beiträge: 11
ESD befindet sich auf einem aufstrebenden Ast
Standard

Ich habe es jetzt ohne jedes Tool direkt in php gelöst:
PHP-Code:
$quelle = @file('/rss-inhalt-gesamt.php');
$data implode (""$quelle);
preg_match_all("|<item>(.*)</item>|Uism",$data$itemsPREG_PATTERN_ORDER);
    if (
count($items[1])==0) {
    
preg_match_all("|<item .*>(.*)</item>|Uism",$data$itemsPREG_PATTERN_ORDER);
    }
    for (
$i=0$i<count($items[1]); $i++) {
    
preg_match_all("|<title>(.*)</title>(.*)<description>(.*)</description>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regsPREG_PATTERN_ORDER);
    echo 
"<b>&middot;</b> <a href=\"".$regs[5][0]."\" target=\"_blank\">".$regs[1][0]."</a><br /> ".$regs[3][0]." <br />\n";
    } 
Soweit klappt es Komsicherweise besser als mit beiden RSS Tools.
Leider weiß ich nicht wie ".$regs[3][0]." kürzen und begrenzen kann.

Der Ausschnitt des ".$regs[3][0]." ist zb. wie folgend:
HTML-Code:
	Author: 909&lt;br /&gt;

	Forum: &lt;a href=http://forum.url.de/irgendetwasdsfasdfl/dkfasdkj.html&lt;/a&gt; &lt;br /&gt;
	Date: 2008-12-11 &lt;br /&gt;&lt;br /&gt;Hallo,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;was für eine Bezeichnung hat die? Entweder ist es defekt oder &amp;quot;hinter&amp;quot; dem iegt ein&lt;br /&gt;vor ....&lt;br /&gt;&lt;br /&gt;Gruß
Gerne würde ich den Berich
HTML-Code:
Author: 909&lt;br /&gt;

	Forum: &lt;a href=http://forum.url.de/irgendetwasdsfasdfl/dkfasdkj.html&lt;/a&gt; &lt;br /&gt;
	Date: 2008-12-11 &lt;br /&gt;&lt;br /&gt;
ausschließen und
HTML-Code:
Hallo,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;was für eine Bezeichnung hat die? Entweder ist es defekt oder &amp;quot;hinter&amp;quot; dem iegt ein&lt;br /&gt;vor ....&lt;br /&gt;&lt;br /&gt;Gruß
ohne brakes und auf maximal 100 Zeichen begrenzen.

Danke
ESD
Mit Zitat antworten
  #5 (permalink)  
Alt 11.12.2008, 15:23
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Willst du eine ganz speziellen RSS-Reader für nur einen oder wenige RSS-Feeds machen oder sollte der universell sein? Bei letzterem kommst du mit deinen regulären Ausdrücken nicht weiter. RSS-Feeds können ziemlich unterschiedlich aussehen, da es verschiedene Versionen gibt und viele Teile optional sind. So muss die DESCRIPTION bspw. nicht im Feed drin sein und damit würde dein RegEx schon mal versagen. Auch kann das Datum unterschiedlich sein, etc. pp.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #6 (permalink)  
Alt 11.12.2008, 16:02
ESD ESD ist offline
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 02.12.2008
Beiträge: 11
ESD befindet sich auf einem aufstrebenden Ast
Standard

hallo Mario,

nein der Reader ist nur für einen speziellen Feed.
Mit Zitat antworten
  #7 (permalink)  
Alt 11.12.2008, 17:06
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Wenn der Feed immer genauso aussieht, würde ich einfach noch mal so einen RegEx darauf anwenden:

Code:
=Date: .{35}(.*)$=isU
Sollten die beiden <br /> zwischen Date: und dem „Hallo“ zum Text gehören, musst du statt 35 nur 10 Zeichen vorher greifen.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #8 (permalink)  
Alt 15.12.2008, 11:21
ESD ESD ist offline
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 02.12.2008
Beiträge: 11
ESD befindet sich auf einem aufstrebenden Ast
Standard

Hallo Mario,

erstmal Danke für deine Mithilfe. Ich bin mir nicht sicher an welchem Punkt der Aufruf passieren soll. Meinst du beim Echo befehl?
Mit Zitat antworten
  #9 (permalink)  
Alt 15.12.2008, 13:01
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Entweder du machst noch mal ein preg_match mit diesem RegEx auf $regs[3][0] oder du baust das gleich in dein preg_match_all mit ein und schreibst in dem RegEx statt:

Code:
<description>(.*)</description>
… besser:

Code:
<description>.*Date: .{35}(.*)</description>
Das sollte eigentlich passen.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 16.12.2008, 00:32
ESD ESD ist offline
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 02.12.2008
Beiträge: 11
ESD befindet sich auf einem aufstrebenden Ast
Standard

Klasse Mario,

das funktioniert super. Für mich noch einmal zum Verständnis du hast mit der Funktion die Ausgabe nach dem Date -35 Zeichen ausgegeben richtig?

Falls ich es richtig verstanden habe kommt natürlich direkt die nächste Frage die Brakes im text
HTML-Code:
&lt;br /&gt;
wie kann ich diese aus dem Text filtern?
Mit Zitat antworten
Sponsored Links
Antwort

Stichwörter
feed, rss

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
RSS Feed und KLIP fürs Forum hemfrie Fragen, Konstruktive Kritik, Lob / Bekanntmachungen 22 16.06.2009 21:53
XML und RSS ? Baracudagirl (X)HTML 3 12.05.2009 20:33
RSS Feeds wieder geben, aber wie ? Wotan (X)HTML 0 12.06.2007 11:24
RSS Bereich definieren josch Serveradministration und serverseitige Scripte 9 05.04.2006 11:37
was ist RSS und wie funktioniert es ??? Paco Offtopic 23 18.08.2004 08:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:31 Uhr.