Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
XML auslesen mit 2 gleichen Inhalten [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
XML auslesen mit 2 gleichen Inhalten


 
25andy12
12-06-2008, 12:41 
 
Hallo zusammen.

Sorry, dass ich wahrscheinlich wieder eine relativ dumme Frage stelle, aber irgendwie fehlt mir selbst das Wissen, um richtig nach der Lösung zu suchen. Hier mein Problem:

Ich habe eine XML Datei, die wie folgt aussieht:


<?xml version="1.0" encoding="UTF-8" ?>
<product>
<item>
<title>TITEL</title>
<description>BESCHREIBUNG</description>
<price>PREIS</price>
<photo>IMAGE</photo>
<link>LINK</link>
</item>
<item>
<item>
<title>TITEL</title>
<description>BESCHREIBUNG</description>
<price>PREIS</price>
<photo>IMAGE</photo>
<link>LINK</link>
</item>
<item>
</product>

Dazu kommt, dass diese von mir von einem anderen Server ausgelesen wird, und ich somit leider nichts ändern kann an der Struktur.

Der Code zum Auslesen sieht bei mir so aus:

<?php

$daten = file_get_contents("Link zur XML Datei");

$daten = explode("<item>" , $daten);

for ($zaehler = 1; $zaehler < count($daten); $zaehler++) {

ereg("<title>(.*)</title>" , $daten[$zaehler] , $title);

echo "<dl>\n";

echo " <dt> <b .($title[1]). >$title[1]</b> </dt>\n";

echo "</dl>\n";
}
?>

Das Problem was ich nun habe ist, dass logischerweise nun beide Titel ausgelesen werden. Es soll aber nur einer der beiden ausgelesen werden, und beim Refresh der Seite der andere. Kann auch zufällig sein. Hauptsache, es wird überhaupt nur einer und nicht beide angezeigt.

Gibts dafür eine Lösung?

Für Tipps und Hilfen bin ich dankbar.

Grüße
Andy

 
asp2php
12-06-2008, 12:57 
 
Probiere mal:

http://de.php.net/manual/en/function.simplexml-load-file.php

 
XGremliN
12-06-2008, 12:58 
 
daten in einen array schreiben und immer nur ein element anzeigen lassen

 
25andy12
12-06-2008, 13:08 
 
Danke für die ersten beiden Antworten!

Unter dem Link hab ich erstmal genug zum lesen und ausprobiren. Danke.

Was du schreibst, XGremliN, hört sich bestimmt für einige logisch und gut an, aber ich kann da leider gerade nichts mit anfangen. Auch wenn ich es gerne wollte ;)

Grüße
Andy

 
jahlives
12-06-2008, 13:48 
 
preg_match_all('/<item>.*<title>(.*)<\\\/title>(.*)<\\\/item>iUs/',$deinString,$ret);
//$anzKey sollte die Keys enthalten welche eindeutige Titel haben
//Doubletten werden entfernt
$anzKey = array_unique($ret[1]);
foreach($anzKey as $key=>$wert){
echo $ret[1][$key].'<br />'.$ret[2][$key].'<br />';
}

 
asp2php
12-06-2008, 14:06 
 
Ich frage mich, warum man XML-Datenformat gewählt hat? Mit Sicherheit nicht dafür, dass PHP-Programmierer die Datei als String einliest und mit preg_match zerpflückt :goth:


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