Beat: preg_replace

Beitrag lesen

aber wie ersetzt man alle "suchstrings" im gegebenen bereich?
sagen wir - wie entfernt man alle <br> zwischen <pre></pre>?
soweit habe ich es gedacht,, aber weiter?

preg_replace("/<pre>(<bre>+?)</pre>", " ", $string);

  
  
Ich verwende positive Lookahead und Lookbehind Assertions.  
Was zwischen <pre> ist, wird an eine Sub weiter gereicht, aber nur wenn notwendig.  
  
In PHP kanst du etwas ähnliches mit: preg\_replace\_callback() machen  
Handbuch:  
mixed preg\_replace\_callback ( mixed $Suchmuster, callback $Callback, mixed $Zeichenkette [, int $Limit [, int &$Anzahl]] )  
Limit ist per Standard -1 also unbegrenzt, wird alles matchen  
  
Meine Perl Implementation:  
  
~~~perl
  
#!C:/Programme/Perl/bin/perl.exe -w  
#  
use strict;  
  
BEGIN {  
 use CGI::Carp qw(carpout);  
 open(LOG, ">>error.txt")  or  die "Unable to append to error.txt: $!\n";  
 carpout(*LOG);  
}  
  
my $string = "abc <pre> xxx <br> yyy <br>zzz </pre> abc <pre>123</pre> abc";  
  
$string =~ s#(?<=<pre>)(.*?<br>.*?)(?=</pre>)#convert_br_to_nl($1)#eg;  
  
sub convert_br_to_nl{  
  my $t = shift;  
  $t =~ s/<br>/\n/g;  
  return $t;  
}  
  
print $string, "\n";  
  
sleep(10);  
  
exit;  
__END__  

mfg Beat

--
Woran ich arbeite:
X-Torah
   <°)))o><                      ><o(((°>o