phpbar.de logo

Mailinglisten-Archive

[php] Re: regular expressions - ist da wirklich nicht mehr ????

[php] Re: regular expressions - ist da wirklich nicht mehr ????

Martin Ramsch m.ramsch_(at)_computer.org
Sun, 15 Aug 1999 22:19:59 +0200


Alexander Rudyk schrieb am Sonntag, den 15. August 1999:
> > Aber was ist da Deiner Meinung nach unter php3 schlechter als
> > sonst?
[...]
> 1. In einigen anderen Mails in der Liste angesprochene Besonderheiten
>    (Performanceauffaelligkeiten und zuviele Elemente in $regs)

Hmm, habe ich irgendwie nicht mitbekommen (konnte aber auch nicht
alles mitlesen).  Ich werd' mal im Listenarchiv nachsehen.

> 2. Warum funktioniert folgendes in Perl und in PHP3 nicht?
>    Ich will alle HTML-Tags, also alles zwischen < und > ueberall im
>    Text entfernen. Theoretisch muesste es ein
> 
> $blah = ereg_replace("<(.*)>","",$blah);
> 
> ja tun.

So geht das aber weder in Perl noch in PHP, da der *-Operator sich
immer so viel wie möglich nimmt.  Ab Perl 5 geht *?, um so kurz wie
möglich zu passen, und das hat man mit den preg-Funktion in PHP auch
zur Verfügung.

> 3. Im Vergleich zu Perl sind eregs mit den ganzen Funktionen unnoetig
>    kompliziert und umstaendlich...
>    
>    Perl: $blah = /dashierwird/dasda/g;
>    PHP3: $blah = ereg_replace("dashierwird","dasda",$blah);

In der Perl-Zeile muß =~ stehen, damit es funktioniert!  Eher
vergleichbar sind diese Zeilen:
  Perl:  ( $neu = $alt ) =~ s/muster/ersatz/g;
  PHP3:  $neu = ereg_replace('muster','ersatz',$alt);

Bei der Frage, welcher Ansatz besser ist, bin ich recht unentscheiden,
denn ich programiere ziemlich viel in Perl und schätze da auch die
syntaktische Kürze.

Aber: Solche Seltsamheiten wie die Bindung per =~ und daß zum
Beispiel ein unscheinbarer Optionsbuchstabe das ganze Verhalten der
Substitutionsfunktion komplett ändern kann, sorgen dafür, daß Perl
langsamer erlernbar ist als PHP und es auch besonders leicht ist,
unverständlichen Code zu schreiben. (Ja, ich weiß, daß das immer
möglich ist :).
Da ist die Funktions-Syntax in PHP klarer, wenn auch umständlicher.

Und wenn's unbedingt nötig ist, könntest Du Dir ja eine Funktion
s() definieren, die sich änhlich wie Perls s/// verhält:
   $neu = s($alt,'/muster/ersatz/opt');
Ist nicht allzu schwer zu bauen ...

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7


php::bar PHP Wiki   -   Listenarchive