php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.12.2006, 16:15  
Gast
 
Beiträge: n/a
Standard [Erledigt] atom-feed auslesen

hab mich jetzt daran gemacht einen funktionierenden rss-feed auslesecode für meinen atomfeed umzubauen.

dabei hab ich momentan folgendes problem:

folgendes funktioniert: <Auslesen des contents>
PHP-Code:
preg_match_all("|<summary type='html'>(.*)</summary>|Uism",$items[1][$i], $regsPREG_PATTERN_ORDER);
  echo 
"[b]&middot;[/b] ".$regs[1][0]."
\n"

folgendes funktioniert auch: <Auslesen des titels und links>
PHP-Code:
preg_match_all("|<title type='text'>(.*)</title>(.*)<link rel='alternate' type='text/html' href='(.*)' title='alternate'></link>|Uism",$items[1][$i], $regsPREG_PATTERN_ORDER);
   echo 
"[b]&middot;[/b] <a href=\"".$regs[3][0]."\" target=\"_blank\">".$regs[1][0]."</a>
\n"

das allerdings nicht: <kombination von titel, links und content
PHP-Code:
  preg_match_all("|<title type='text'>(.*)</title>(.*)<link rel='alternate' type='text/html' href='(.*)' title='alternate'></link>(.*)<summary type='html'>(.*)</summary>|Uism",$items[1][$i], $regsPREG_PATTERN_ORDER);
echo 
"» [url='".$regs[3][0]."'][b]".$regs[1][0]."[/b][/url]
"
.$regs[5][0]."

\n"

hier gibts die fehlermeldung - Undefined offset: 0
was auf einen zugriff auf ein undefiniertes array element hindeutet, würde ich mal vermuten also müsste diese variable $regs[5][0] meiner meinung nach den fehler verursachen.
ich hab leider keine ahnung warum, vielleicht kann mir da wer weiterhelfen.

zur veranschaulichung nochmal der komplette code:
PHP-Code:
<?php
error_reporting
(E_ALL); 
ini_set('display_errors'1);         


echo (
'[b]Kalender Einträge[/b]
'
);

$quelle = @file('http://www.google.com/calendar/feeds/webmaster%40marktgemeinde-seibersdorf.at/public/basic');
$data implode (""$quelle);
preg_match_all("|<entry>(.*)</entry>|Uism",$data$itemsPREG_PATTERN_ORDER);
    if (
count($items[1])==0) {
    
preg_match_all("|<entry .*>(.*)</entry>|Uism",$data$itemsPREG_PATTERN_ORDER);
    }
    for (
$i=0$i<count($items[1]); $i++) {
    
preg_match_all("|<title type='text'>(.*)</title>(.*)<link rel='alternate' type='text/html' href='(.*)' title='alternate'></link>(.*)<summary type='html'>(.*)</summary>|Uism",$items[1][$i], $regsPREG_PATTERN_ORDER);
echo 
"» [url='".$regs[3][0]."'][b]".$regs[1][0]."[/b][/url]
"
.$regs[5][0]."

\n"
;
   
    }
?>
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.12.2006, 09:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

warum benutzt du keinen xml parser?
nikosch ist offline  
Alt 09.12.2006, 19:04  
Benutzer
 
Registriert seit: 09.12.2006
Beiträge: 33
sono
Standard

Schau dir mal simplexml und xpath an, damit dürftest du weiter kommen als mit regex.
Allerdings kanns dann Probleme geben wenn der Feed aus invalidem xml ist.

Gruß sono
sono ist offline  
Alt 10.12.2006, 05:05  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

dann taugt der feed ohnehin nix...
nikosch ist offline  
Alt 10.12.2006, 11:11  
Benutzer
 
Registriert seit: 09.12.2006
Beiträge: 33
sono
Standard

Da geb ich dir recht. Der Feed ist dann zwar bescheiden, aber es ist wohl nur ein schwacher Trost für jemand der an den Inhalt will.

Ich weiß allerdings gar nicht, ob es überhaupt möglich ist invalide Feeds zu erstellen, bzw ob einem das nicht auffallen müsste weil kein einziger Reader den Feed lesen kann.

Gibts da ne ähnlich bösartige Fehlerignoranz wie bei Browsern und Webseiten?
Eigentlich müssten ja die Reader die Struktur anhand der DTD validieren, nur wie gesagt bei Browsern juckt das ja auch nicht so richtig.

Weiß da zufällig jemand wie das bei feeds aussieht?
sono ist offline  
Alt 10.12.2006, 19:17  
Gast
 
Beiträge: n/a
Standard

finds schade dass hier keiner auf mein eigentliches problem eingeht.

ich bin php-anfänger und hab zuerst verschiedene feed implementierungen auf meinem server ausprobiert, die ich im www gefunden hab.

dabei hat sich gezeigt, dass viele beispiele schon mal aus php technischer sicht nicht funktioniert haben.
zB hat bei einem beispiel irgendein fetch befehl nicht funktioniert, bei einem andern irgendwelche xml befehle nicht, weil diese extension offenbar nicht installiert ist, während das beispiel das ich jetzt als ausgangsbasis verwendet habe funktioniert hat.

ausserdem bin ich wie gesagt anfänger und kann mich an bestehendem code orientieren, aber mir jetzt einen befehl vor die füsse zu schmeissen den ich anstatt des bisherigen verwenden sollte bringt mich nicht weiter.

mir gehts in erster linie mal um das auslesen von titel, link, und content.
was auch ja funktioniert, wie obiges post dokumentiert, aber halt nicht in einem einzigen statement, deswegen meine anfrage hier.

der feed um den es geht, ist der google calender feed -
hier zu sehen - http://www.google.com/calendar/feeds...t/public/basic
leider ist dieser atom feed, komplizierter aufgebaut wie ein rss-feed.

weil die tags nicht mit <link> </link> eingeschlossen sind, sondern der link tag beispielsweise so aussieht - >(.*)<link rel='alternate' type='text/html' href='http://www.ccc.de' title='alternate'></link>

bevor ich hier jetzt komplett den faden verliere, bitte darauf rücksicht nehmen, dass ich anfänger bin und mir nur in der sache zu helfen oder mit praktischen beispielen bzw. anleitungen, wie genau was gemacht werden müsste.

vielen dank dafür
 
Alt 10.12.2006, 20:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Also du benötigst einen XML-Parser.
Welche hast du denn ausprobiert, welche haben nicht funktioniert und welche PHP-Version steht dir zur Verfügung?
Zergling-new ist offline  
Alt 11.12.2006, 13:03  
Gast
 
Beiträge: n/a
Standard

also ich hab version 5.0.4
was bei einem beispiel nicht funktioniert hat, war fetch_rss -
Call to undefined function fetch_rss()
bei einem anderen war es domxml_open_file() -

so wies aussieht würde simplexml funktionieren, aber
warum darf ich nicht mit dem funktionierenden beispiel weitermachen *heul*.
ich wüsste hier jetzt wie ich weitermache, aber eure tipps interpretier ich in die richtung - vergiss den mist was du bis jetzt beisammen hast (möge er auch noch so gut funktioneren) und fang nochmal von vorne an, am besten mit einem xml parser
wie gesagt schaff ichs nicht als anfänger, hier so eine atom-feed abfrage von grund auf neu aufzubauen.
 
Alt 11.12.2006, 14:10  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Also es gibt genügend funktionen von PHP die dir da helfen können.

http://de3.php.net/manual/en/function.xml-parse.php

mit dem Code kannst du dir da salles in ein Array laden. Dann musst du's nur noch auslesen. Das machst mit ner Schleife. Auch nicht so schwer denn auf der php.net seite sind unter den Comments konkrete Beispiele dafür

PHP-Code:
<?php
$file
="http://www.google.com/calendar/feeds/webmaster%40marktgemeinde-seibersdorf.at/public/basic";
$xml_parser xml_parser_create();


$handle fopen($file"rb");
$contents '';
while (!
feof($handle)) {
  
$data .= fread($handle8192);
}
fclose($handle);

xml_parse_into_struct($xml_parser$data$vals$index);
xml_parser_free($xml_parser);

echo 
"<pre>";
print_r($vals);
echo 
"</pre>";
die();
?>
M3g4Star ist offline  
Alt 11.12.2006, 19:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

keiner sagt, dass alles mist ist, was du machst. aber obgleich rss und atom klar definiert sind, bieten sie halt weit mehr möglichkeiten als deine reg. ausdrücke abbilden.
und wer sagt denn, dass du in nem halben jahr nicht nen anderen feed damit auslesen willst, bei dem es ein tag mehr oder ein attribut oder ne andere element-reihenfolge gibt? im allgemeinen sind die tipps der leute hier ganz gut.
mit zunehmender komplexität kommst du selbst mit einem simplen xml_parse_into_struct() weiter als mit regulären ausdrücken...
starte mal M3g4Star's script und schau dir die arrays an. die sind nahezu selbsterklärend.
gruß --n

ps:
@sono: solnge man selbst feeds generieren kann ist es natürlich auch möglich dies falsch zu machen
nikosch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ordner auslesen und während des auslesen sortieren Dooki PHP Tipps 2008 6 14.05.2008 17:50
Vom Browser verschickte Daten auslesen und anzeigen? andy32 PHP Tipps 2008 3 22.08.2007 18:33
suche atom feed integration beispiel Trash 1 08.12.2006 05:23
RSS2.0 Feed auslesen und Grafik generieren PHP Tipps 2006 4 12.10.2006 15:23
gelöst: Tabelle auslesen -&amp;amp;amp;gt; Gleiche Einträge nur 1 Mal Datenbanken 3 31.03.2006 01:44
Textdatei auslesen, aber ohne Komentare HSFighter PHP Tipps 2006 31 23.02.2006 10:07
Cookies auslesen HSFighter PHP Tipps 2007 2 19.11.2005 14:56
[Erledigt] bestimmte ID's auslesen als array PHP Tipps 2007 2 31.10.2005 20:23
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Daten aus einer Datenbank auslesen Datenbanken 2 04.09.2005 19:13
[Erledigt] nächste Zeile einer Db auslesen? PHP Tipps 2005-2 7 01.08.2005 00:11
alle Verzeichnisse sortiert auslesen PHP Tipps 2005-2 7 17.07.2005 10:20
auslesen und nochmals auslesen?! $$$ ThiKool $$$ PHP Tipps 2005 23 10.03.2005 19:43
[Erledigt] Auslesen von Text incl. &quot; aus Textfeld PHP Tipps 2007 4 04.01.2005 13:30
[Erledigt] Daten von anderer Homepage auslesen PHP Tipps 2004-2 5 02.12.2004 18:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php atom feed auslesen, call to undefined function fetch_rss(), atom feed auslesen, google calendar php auslesen, php google kalender auslesen, google kalender auslesen, google kalender php auslesen, atom feed auslesen php, google kalender auslesen php, php atom auslesen, php fetch_rss, atom mit php auslesen, http://www.php.de/php-tipps-2006/43012-erledigt-atom-feed-auslesen.html, atom feed in html, php kalender auslesen, atom feeds auslesen php, google calendar auslesen php, php kalender-daten auslesen, php atom lesen, google calendar parser php

Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.