myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

XML mittels PHP durchsuchen

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 15.08.09, 16:36   #1
Implant
Anfänger
 
Registriert seit: Sep 2008
Beiträge: 10
Bedankt: 3
Implant ist noch neu hier! | 0 Respekt Punkte
Standard 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("Ö""&Ouml;"$suchbegriff);
  
$suchbegriff ereg_replace("ö""&ouml;"$suchbegriff);
  
$suchbegriff ereg_replace("Ä""&Auml;"$suchbegriff);
  
$suchbegriff ereg_replace("ä""&auml;"$suchbegriff);
  
$suchbegriff ereg_replace("Ü""&Uuml;"$suchbegriff);
  
$suchbegriff ereg_replace("ü""&uuml;"$suchbegriff);
  
$suchbegriff ereg_replace("ß""&szlig;"$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.
Implant ist offline   Mit Zitat antworten
Ungelesen 16.08.09, 11:49   #2
darkSL
Anfänger
 
Registriert seit: Jan 2009
Beiträge: 2
Bedankt: 0
darkSL ist noch neu hier! | 0 Respekt Punkte
Standard

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); 
darkSL ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr.


Sitemap

().