[PHP Problem] Datei nach String durchsuchen

 


toffifee
Zaungast

22.09.09
18:08 Uhr
Moin,

ich möchte eine externe (in diesem Fall xml-)Datei via php auf einen bestimmten String durchsuchen.
Der gesuchte Abschnitt befindet sich zwischen <string></string> Tags. Das Skript soll aber nicht nur den gesuchten String ausgeben, sondern alles was sich zwischen den <string>-Tags befindet.

Bespiel:
<string>Hallo, ich heiße Otto.</string>
Wenn ich nun nach „Otto“ suche, soll php mir „Hallo, ich heiße Otto.“ zurückgeben.

Wie mache ich das?

Gruß
Link zu diesem Beitrag in die Zwischenablage kopieren
Naboolean
Gast

22.09.09
18:51 Uhr
Du kannst dir für jeden Suchstring (z.B. Otto) einen passenden Regex-String bauen:

  1. (?:<string>)(.*?Otto.*?)(?:<\/string>)
Quelltext in Zwischenablage kopieren

e: Ach so, dabei natürlich drauf achten, Regex-Steuerzeichen im Suchstring zu maskieren.
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

22.09.09
19:19 Uhr
Editiert: 22.09.09, 19:42 Uhr
Und wie such ich nach diesem String? (Sorry, hab von php nicht so viel Ahnung)

edit: Hab jetzt selber noch ein wenig rumprobiert. Ist zwar nicht sehr sauber, aber funktioniert:
  1. $suche = "Otto";
  2. $filename = 'namen.txt';
  3.  
  4. $f = file_get_contents($filename);
  5. $pos = strpos($f, $suche);
  6. if ($pos === false) {
  7. echo "Der String '$suche' wurde nicht gefunden";
  8. } else {
  9. $start = $pos - 150;
  10. $longstr = substr($f, $start, 300);
  11. $explode = explode("<string>", $longstr);
  12. $output = explode("</string>", $explode[1]);
  13.  
  14. }
Quelltext in Zwischenablage kopieren
Link zu diesem Beitrag in die Zwischenablage kopieren
Naboolean
Gast

22.09.09
19:43 Uhr
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

23.09.09
14:39 Uhr
Davon weiß ich zwar immer noch nicht wie man danach sucht, aber hat sich ja jetzt sowieso erledigt...
Link zu diesem Beitrag in die Zwischenablage kopieren
 
#