Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
15.08.09, 16:36
|
#1
|
Anfänger
Registriert seit: Sep 2008
Beiträge: 10
Bedankt: 3
|
XML mittels PHP durchsuchen
Ich hab hier ein S***** um eine XML Datei zu durchsuchen und das ergebnis auszugeben:
PHP-Code:
<?php // Hier die zu durchsuchenden Dateien eintragen $xml_dateien = array( "filme_data.xml"); // Überprüfen ob über POST gesendet wurde if ($_POST) { // Überprüfen ob der Suchbegriff mindestens 3 Zeichen enthält if (strLen($_POST["suchbegriff"]) > 2) { $suchbegriff = $_POST["suchbegriff"]; // Die Umlaute im Suchbegriff in Buchstabencode umwandeln; // das ist nur nötig wenn in der XML-Datei auch Buchstabencode vorhanden ist $suchbegriff = ereg_replace("Ö", "Ö", $suchbegriff); $suchbegriff = ereg_replace("ö", "ö", $suchbegriff); $suchbegriff = ereg_replace("Ä", "Ä", $suchbegriff); $suchbegriff = ereg_replace("ä", "ä", $suchbegriff); $suchbegriff = ereg_replace("Ü", "Ü", $suchbegriff); $suchbegriff = ereg_replace("ü", "ü", $suchbegriff); $suchbegriff = ereg_replace("ß", "ß", $suchbegriff); $suchergebnis = ""; // Hier werden die Suchergebnisse gespeichert $suchergebniszahl = 0; // Zähler für die Suchergebnisse for ($zaehler = 0; $zaehler < count($xml_dateien); $zaehler++) { $inhalt = file_get_contents($xml_dateien[$zaehler]); // Datei einlesen $inhalt = explode("<IDEM>" , $inhalt); // Inhalt in ein Array zerlegen for ($inhaltszaehler = 0; $inhaltszaehler < count($inhalt); $inhaltszaehler++) { // Inhalt mit dem Suchbegriff überprüfen if (eregi($suchbegriff, $inhalt[$inhaltszaehler]) == true) { // Link, Name und Beschreibung auslesen ereg("<NAME>(.*)</NAME>" , $inhalt[$inhaltszaehler] , $name); ereg("<MEDIUM>(.*)</MEDIUM>" , $inhalt[$inhaltszaehler] , $medium); ereg("<ORT>(.*)</ORT>" , $inhalt[$inhaltszaehler] , $ort); ereg("<AUFLOESUNG>(.*)</AUFLOESUNG>" , $inhalt[$inhaltszaehler] , $aufloesung); ereg("<FORMAT>(.*)</FORMAT>" , $inhalt[$inhaltszaehler] , $format); $suchergebnis .= "<tr>\n"; $suchergebnis .= " <td><font face=\"Verdana\" size=\"2\">$name[1]</font></td>\n"; $suchergebnis .= " <td><font face=\"Verdana\" size=\"2\">$medium[1]</font></td>\n"; $suchergebnis .= " <td><font face=\"Verdana\" size=\"2\">$ort[1]</font></td>\n"; $suchergebnis .= " <td><font face=\"Verdana\" size=\"2\">$aufloesung[1]</font></td>\n"; $suchergebnis .= " <td><font face=\"Verdana\" size=\"2\">$format[1]</font></td>\n"; $suchergebnis .= "</tr>\n"; $suchergebniszahl++; // Zähler wird erhöht } } } // Ausgabe des Suchergebnisses if ($suchergebniszahl == 0) { echo "<font face=\"Verdana\" size=\"3\" color=\"FF0000\" ><b>Leider konnte in der Datenbank kein Eintrag gefunden werden!</b></font>"; } else { echo "" . ($suchergebniszahl > 1) ? "<font face=\"Verdana\" size=\"2\"><b>Es wurden $suchergebniszahl Filme oder $suchergebniszahl Serien gefunden:</b></font><br>" : "<font face=\"Verdana\" size=\"2\"><b>Es wurde eine Film oder eine Serie gefunden:</b></font><br>"; echo $suchergebnis; } } } ?>
Wie stelle ich es jetzt an das nur <NAME>(.*)</NAME> bzw. $name ausgelesen wird, aber trozdem das gesammt ergebnis das eintrages <IDEM> angezeigt wird?
Noch mal verständlicher:
Ich möchte das NUR in
ereg("<NAME>(.*)</NAME>" , $inhalt[$inhaltszaehler] , $name);
gesucht wird, das Suchergebnis aber
ereg("<NAME>(.*)</NAME>" , $inhalt[$inhaltszaehler] , $name);
ereg("<MEDIUM>(.*)</MEDIUM>" , $inhalt[$inhaltszaehler] , $medium);
ereg("<ORT>(.*)</ORT>" , $inhalt[$inhaltszaehler] , $ort);
ereg("<AUFLOESUNG>(.*)</AUFLOESUNG>" , $inhalt[$inhaltszaehler] , $aufloesung);
ereg("<FORMAT>(.*)</FORMAT>" , $inhalt[$inhaltszaehler] , $format);
beinhaltet.
|
|
|
16.08.09, 11:49
|
#2
|
Anfänger
Registriert seit: Jan 2009
Beiträge: 2
Bedankt: 0
|
Versteh ich das richtig, du willst, dass in $name alle Subnodes stehn?!
Wenn du einfach nur jedes IDEM in nem String haben willst, dann reicht soetwas z.B.:
PHP-Code:
$inhalt = preg_split("/(<\/?IDEM>[\t\s\n\r]*)+/is", $string);
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr.
().
|