WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP-Script für RSS/RDF ändern (http://www.wcm.at/forum/showthread.php?t=183626)

Alter 21.01.2006 15:50

PHP-Script für RSS/RDF ändern
 
Ich möchte die Datei portal_heise_ticker.php (aus dem IntroPortal-Mod für phpBB2) ändern, um auch andere RDF oder RSS Feeds anzeigen zu können.

In der heise-rdf (http://www.heise.de/newsticker/heise.rdf) gibt es diese Struktur:
- <item>
<title>...TITEL...</title>
<link>...LINK...</link>
</item>

Im WCM-Backend (http://www.wcm.at/backend.php?id=0) gibt es nun aber diese Struktur:
- <item>
<title>...TITEL...</title>
<link>...LINK...</link>
<description>...TEXT...</description>
</item>

Das Heise-Script sieht so aus:
PHP-Code:

<?PHP

$fcontents 
join (''file ('http://www.heise.de/newsticker/heise.rdf')); 
$fcontents str_replace ("</item>"""$fcontents); 
$fcontents str_replace ("</link>"""$fcontents); 
$splices explode ("<item>"$fcontents); 
for (
$i 1$i count($splices); $i++){ 
$link explode("<link>",$splices[$i]); 
$link[1] = strip_tags($link[1]); 
$headline str_replace ("<title>""<a href=\"" trim($link[1]) . "\" target=\"_blank\" class=\"heiseheadline\">"$splices[$i]); 
$headline str_replace ("</title>""</a>"$headline); 
$headline explode ("<link>"$headline); 
$headline $headline[0]; 
print 
$headline "<img src=\"1.gif\" height=20 width=1 align=top>
"


 
?>

Wenn ich hier nur den Link zur rdf ändere, kann ich zwar die Headlines ausgeben , also den <title>, doch der Text aus der <description> wird an den <link> einfach angehängt, deshalb funktionieren die Links zu den Artikeln nicht.

Ich kann zu wenig PHP, um die nötigen Änderungen durchzuführen. Kann mir jemand helfen?
Danke!

Alter 21.01.2006 19:17

Zur weiteren Erklärung:
Die Headlines werden korrekt ausgegeben, die Links zu dem jeweiligen Artikel enthalten aber auch die Beschreibung - sieht dann so aus:

http://www.wcm.at/story.php?id=9273 Die Apple Computer Inc. hat im ersten Quartal des laufenden Geschäftsjahres 2005/06 dank der beispiellosen Nachfrage nach seine iPod-Musikplayern Rekordergebnisse verbucht. Das Geschäft mit den Macintosh-Desktops und -Laptops entwickelte sich ebenfalls gut. In den Apple-Einzelhandelsgeschäften wurden erstmals mehr als eine Milliarde Dollar (mehr als 825 Mio. Euro) umgesetzt.

Ich habe noch nicht herausgefunden, wie ich die Beschreibung aus dem Link wegbekomme, also alles, was in der backend.php zwischen diesen Tags steht: <description></description>

jak 22.01.2006 11:12

Schau dir einfach an was das php Skript macht:
Code:

Eingabe:
$fcontents:
-----
<item>
  <title>Der 1.Titel</title>
  <link>link_zum_1_titel</link>
  <description>bla</description>
</item>

<item>
  <title>Der 2.Titel</title>
  <link>link_zum_2_titel</link>
  <description>bla</description>
</item>
-----
$fcontents = str_replace ("</item>", "", $fcontents);
$fcontents = str_replace ("</link>", "", $fcontents);

$fcontents:
----
<item>
  <title>Der 1.Titel</title>
  <link>link_zum_1_titel
  <description>bla</description>

<item>
  <title>Der 2.Titel</title>
  <link>link_zum_2_titel
  <description>bla</description>
----
$splices = explode ("<item>", $fcontents);
----
$splices[0]:
----
<title>Der 1.Titel</title>
  <link>link_zum_1_titel
  <description>bla</description>
$splices[1]:
----
  <title>Der 2.Titel</title>
  <link>link_zum_2_titel
  <description>bla</description>
----
$link = explode("<link>",$splices[0]);
----
$link[0]:
  <title>Der 2.Titel</title>
$link[1]:
link_zum_1_titel
  <description>bla</description>

Hier liegt also das Problem.
Lösen kannst du's auf verschiedene Arten:
1.) Einfach alles was zwischen <description> und </description> steht löschen. Sollte so funktionieren:
Code:

$fcontents = preg_replace ("<description>.*<\/description>", "", $fcontents);
2.) Den Text aus der Description in $description speichern:
statt:
Code:

$link = explode("<link>",$splices[$i]);
folgendes:
Code:

$description = explode("<description>",$splices[$i]);
$description[1] = strip_tags($description[1]);
$link = explode("<link>", $description[0]);


Alter 22.01.2006 20:49

Spitze, danke! Ich probiere das gleich.

Edit:
So, hab beide Vorschläge probiert, mit dem zweiten Code-Schnipsel haut es hin, die erste Variante funktioniert so leider nicht.

Hast mir echt geholfen, vielen Dank! :bier:

Alter 23.01.2006 19:09

Jetzt habe ich dank jak's Hilfe die Headlines mit den richtigen Links, nun wollte ich gerne die description unter den Headlines ausgeben, was zwar funktioniert, jedoch:
Wie kann ich die Umlaute, Links etc. als solche darstellen lassen?
Der Text wird so ausgegeben:
Zitat:

Im Jahr 2005 sind einer Studie zufolge weltweit deutlich mehr Computer verkauft worden als im Vorjahr. Der PC-Absatz sei um gut 15 Prozent auf rund 218 Millionen Geräte gestiegen, teilte das US-Marktforschungsinstitut Gartner mit.
Das Forum hier wandelt die Zeichen um, aussehen tut es tatsächlich so (ohne die Abstände): ... Ger & # 228 ; te ...
Das script schaut jetzt so aus:
PHP-Code:

<?PHP
$fcontents 
join (''file ('http://www.wcm.at/backend.php?id=0'));
$fcontents str_replace ("</item>"""$fcontents); 
$fcontents str_replace ("</link>"""$fcontents);
$splices explode ("<item>"$fcontents);
for (
$i 1$i count($splices); $i++){
$description explode("<description>",$splices[$i]);
$description[1] = strip_tags($description[1]);
$link explode("<link>"$description[0]);
$link[1] = strip_tags($link[1]); 
$headline str_replace ("<title>""<a href=\"" trim($link[1]) . "\" target=\"_blank\" class=\"heiseheadline\">"$splices[$i]); 
$headline str_replace ("</title>""</a>"$headline); 
$headline explode ("<link>"$headline); 
$headline $headline[0]; 
print 
"<img src=\"1.gif\">" "[b]$headline[/b]</font>" "
$description[1] . "


"


?>


Alter 23.01.2006 19:28

Sorry, ich habs schon: html_entity_decode() :rolleyes:


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag