Siechfred: Regular Expression

Beitrag lesen

Hell-O!

hab das ganze nur in die Perl-Sektion geschrieben, da es Perl-RegEx ist, eigentlich verwende ich das ganze in PHP und versuche mit der Funktion preg_match_all() die Daten zu bekommen. Dieser Funktion übergebe ich einen String in dem der komplette Inhalt steht...

PHP ist zwar nicht unbedingt meine Baustelle, aber in Perl funktioniert sowas:

use strict;  
use warnings;  
use CGI::Carp qw(fatalsToBrowser);  
use Data::Dumper;  
  
my $string;  
  
print "Content-type: Text/plain\n\n";  
  
while(<DATA>) {  
  $string .= $_;  
}  
print $string . "\n";;  
my @matches = $string =~ /<file:(.+?\.php)>(.+?)<\/file>/sg;  
print Dumper, @matches;  
  
  
__DATA__  
<einlied>  
Lied an!  
<file:foo.php>  
Dingel Dongel  
</file>  
Dumdideldum  
<file:bar.php>  
Sabber Fasel  
</file>  
Lied aus!  
</einlied>

Ergibt:

foo.php
Dingel Dongel
bar.php
Sabber Fasel

Wichtig ist der s-Modifier ("single line"), der bewirkt, dass die Zeichenklasse "." auch Newlines enthalten darf. Ebenfalls darf der g-Modifier nicht vergessen werden, schließlich willst du ja alle Treffer finden, nicht nur den ersten.

Siechfred