hanns: reguläre ausdrücke - wo ist der fehler?

habe eine seite mit html, javascript usw.

die seite in $inhalt gespeichert

nun steht irgendwo die zeichenfolge igel

dann kommt code

dann kommt irgendwo iglu

ich will alles zw. igel und iglu durch neuuuuuuuuuu
ersetzen.

es passiert aber gar nichts. wo ist der fehler?????

$inhalt = addslashes($inhalt);

$r = "!igel.*iglu!";
$neuertext = "neuuuuuuuuuuuuuu";
preg_replace($r,$neuertext,$inhalt);

$inhalt = stripslashes($inhalt);

  1. Lieber hanns,

    probiere mal eine Klammer um Punkt-Stern:

    $r = "!igel(.*)iglu!";

    Dir ist schon klar, dass "igel" und "iglu" dabei mit verschwinden?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. $r = "!igel(.*)iglu!";

      es tut sich nix.

      Dir ist schon klar, dass "igel" und "iglu" dabei mit verschwinden?

      wäre mir erstmal egal, wenn sich überhaupt mal etwas täte ...

      1. Lieber hanns,

        was ich übersehen habe hat wahsaga sofort erkannt:

        $inhalt = addslashes($inhalt);

        $r = "!igel.*iglu!";
        $neuertext = "neuuuuuuuuuuuuuu";
        $inhalt = preg_replace($r,$neuertext,$inhalt);
        ^^^^^
        $inhalt = stripslashes($inhalt);

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. $inhalt = preg_replace($r,$neuertext,$inhalt);
          ^^^^^

          tut mir ja leid, aber ich verstehe nicht was ich ändern muss???

          nach einen hinweis zum problem:

          der quellcode erstreckt sich viele zeilen.
          iglu und igel stehen dort "irgendwo", aber nicht am anfang
          oder ende und auch nicht in einer zeile, falls das irgendwie von
          belang ist.

          1. hi,

            $inhalt = preg_replace($r,$neuertext,$inhalt);
            ^^^^^
            tut mir ja leid, aber ich verstehe nicht was ich ändern muss???

            preg_replace verändert nicht den wert des dritten parameters, sondern liefert den text mit den änderungen als _rückgabewert_.
            wenn du diesen nicht in empfang nimmst, geht er natürlich verloren.

            du solltest dich wirklich dringend eingehender mit den grundlagen beschäftigen, wenn du das auch nach hinweis darauf nicht verstehst.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. du solltest dich wirklich dringend eingehender mit den grundlagen beschäftigen, wenn du das auch nach hinweis darauf nicht verstehst.

              Muss ich zustimmen, sorry!

              Liebe Grüße aus Ellwangen,

              Felix Riesterer.

              1. nun hat es geklappt!!!!

                ich habe für $inhalt eine neue variable $neuerinhalt gewählt.

                wieso das einen unterschied macht ist mir zwar nicht klar,
                aber es scheint zu funktionieren.

                also danke nochmal.

            2. preg_replace verändert nicht den wert des dritten parameters,

              so. das habe ich nun endlich verstanden!
              in der tat hatte ich das gedacht.

              sondern liefert den text mit den änderungen als _rückgabewert_.

              wenn du diesen nicht in empfang nimmst, geht er natürlich verloren.

              Wie kann ich den denn in einer Variablen speichern bzw. in Empfang
              nehmen???
              Am liebsten hätte ich es, wenn der neue Inhalt in der Variablen $inhalt reingeschrieben werden würde. Ist das kompliziert?
              Unter welchem Stichwort muss ich nachschauen??

              In den von mir gefundenen Anwendungen wird immer gleich mit
              echo ausgegeben. Ich will aber den modifizierten inhalt in eine neue Datei schreiben.

              du solltest dich wirklich dringend eingehender mit den grundlagen beschäftigen, wenn du das auch nach hinweis darauf nicht verstehst.

              stimmt! aber es ist halt nicht immer klar, wann ein unverständnis auf grundlagenschwächen zurückzuführen ist. danke für die hilfe!!!!

  2. hi,

    preg_replace($r,$neuertext,$inhalt);

    $inhalt = stripslashes($inhalt);

    preg_replace hat einen _rückgabewert_ - aber an dem scheinst du ja gar nicht interessiert zu sein ...

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. hi,

      preg_replace($r,$neuertext,$inhalt);

      $inhalt = stripslashes($inhalt);

      preg_replace hat einen _rückgabewert_

      ich bin anfänger. ich verstehen nicht was du mir damit sagen willst??!!
      ich will im html-quellcode alles löschen zw. iglu und igel.

      rückgabewerte wie 1 und o oder true und false benötige ich nicht.