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.