Thomas*: ereg_replace, praktische Umsetzung

Hallo,
nachdem ich den Link zum feinen PCRE Evaluator bekommen habe, funtioniert auch mein Regex endlich.

Aber in der Umsetzung in PHP will es auf biegen und brechen nicht funken! Ich hab dutzende von Varianten ausprobiert, die einfachsten wollen nicht funtionieren!

<?php
//preg_replace ( Suchmuster, Ersatz, Zeichenkette [, int Limit [, int &Anzahl]] )
$str = 'Text,und Text <a href="Ox_x_200604.html"><b>Apr 06</b></a>';
echo "$str <b>orig</b>";
echo '<br>';
$str = ereg_replace('/<a href.*</a>/isU', 'ERSATZ', $str);
echo "$str <b>modifi</b>";
?>
Ausgabe auf Browser:

  1. Sorry "Vorschau generieren" war nicht ausgewählt!
    Hier die Ausgabe auf Browser:

  2. gudn tach!

    $str = ereg_replace('/<a href.*</a>/isU', 'ERSATZ', $str);
           ^

    s/ereg_/preg_/g

    prost
    seth

    1. hmpf, ich hab falsch verlinkt... es sollte heissen:

      s/ereg_/preg_/g

      prost
      irmgard... oder ingrid, ach egal.

      1. hmpf, ich hab falsch verlinkt... es sollte heissen:

        s/ereg_/preg_/g

        Hab ich schon gemerkt, habs aber dann doch hinbekommen mit deinem TIP.

        Wie ich zu ereg gekommen bin!? Meine Testdateien heißen alle preg.
        Mir als "Laie" ist aber nicht klar, was nun in meinem Fall so einen großen Unterschied macht, zwischen preg_replace und ereg_replace?
        Tun doch beide suchen und ersetzen!?

        Beschreibung
        mixed preg_replace ( mixed Suchmuster, mixed Ersatz, mixed Zeichenkette [, int Limit [, int &Anzahl]] )

        Beschreibung
        string ereg_replace ( string Suchmuster, string Ersatz, string Zeichenkette )

        prost
        irmgard... oder ingrid, ach egal.

        ???

        Mahlzeit

        1. Hallo Thomas*.

          Mir als "Laie" ist aber nicht klar, was nun in meinem Fall so einen großen Unterschied macht, zwischen preg_replace und ereg_replace?
          Tun doch beide suchen und ersetzen!?

          Aus dem PHP-Manual zu ereg_replace():

          Tip: preg_replace(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg_replace().

          Einen schönen Sonntag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/
          1. Hallo Ashura,

            was nun in meinem Fall so einen großen Unterschied macht, zwischen preg_replace und ereg_replace?

            Aus dem PHP-Manual zu ereg_replace():
            Tip: preg_replace(), ...is often a faster alternative to ereg_replace().

            Gut. Aber das ist doch eher eine Feinheit (kein anderes Prinzip), ereg_replace hatte mit meinem Code gar nicht funktioniert.

            Gruß
            Thomas*

            1. Hallo Thomas,

              Aus dem PHP-Manual zu ereg_replace():
              Tip: preg_replace(), ...is often a faster alternative to ereg_replace().

              Gut. Aber das ist doch eher eine Feinheit (kein anderes Prinzip), ereg_replace hatte mit meinem Code gar nicht funktioniert.

              Nein, das ist nicht »nur eine Feinheit«, denn ereg_replace() verwendet eben keine perlkompatible Syntax sondern die völlig andere (POSIX-Syntax. Dort müsste dein Aufruf

              ereg_replace('<a href=.*<\/a>', 'ERSATZ', $str);

              lauten. Generell ist davon aber abzuraten, da PCRE schneller ist und mehr Möglichkeiten bietet.

              Schöne Grüße,

              Johannes

              --
              ie:% fl:( br:< va:| ls:[ fo:) rl:) n4:? ss:| de:] js:| ch:} sh:) mo:| zu:)
              1. Hallo Johannes,

                Nein, das ist nicht »nur eine Feinheit«, denn ereg_replace() verwendet eben keine perlkompatible Syntax sondern die völlig andere (POSIX-Syntax. Dort müsste dein Aufruf

                ereg_replace('<a href=.*<\/a>', 'ERSATZ', $str);

                Das heißt es gibt da gar keine Modifier? Darum funkt diese hier nicht ereg_replace('/<a href.*</a>/isU'
                OK, dann hab ich es kapiert nach den ausführlichen Erläuterungen...

                Vielen Dank
                Thomas*

        2. gudn tach!

          [...] Unterschied macht, zwischen preg_replace und ereg_replace?
          Tun doch beide suchen und ersetzen!?

          str_replace auch, und trotzdem ist es was anderes als [ep]reg_replace.
          wo genau der unterschied ist, wird dir der php-quellcode verraten koennen. die kurze begruendung ist: ereg ist doof, kann vieles nicht und ist oft lahmer als preg.

          irmgard... oder ingrid, ach egal.
          ???

          hab ich von Gunnar abgeschaut...

          prost
          seth