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 12:21 Uhr.
().
|