Julius Hacker: Eckige Klammer bei regulären Ausdrücken

Hallo Forum :-)

Ich hab da ein kleines Problem mit regulären Ausdrücken.
Ich will eine Variable mit preg_replace() auf einen string
durchsuchen und diesen durch einen anderen ersetzen.
Nunja, nun hab ich das Problem, dass in diesem String der ersetzt
werden soll, eckige Klammern vorkommen, und genau die mag
PHP dann nicht, da diese ja reserviert sind.
Nun zu meiner Frage:
Wie schaffe ich es, die Variable trotzdem nach dem String mit den eckigen Klammern zu durchsuchen?

Danke schonmal im Vorraus!

mfg
Julius

  1. Hallo,
    ich denk mal mit einen Makierungszeichen.

    Ein Backslash () einfach vor die Klammer setzten.

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. Hoi,

      Ein Backslash () einfach vor die Klammer setzten.

      Damit geht es jedenfalls nicht :(

      mfg
      Julius

      1. Hallo,
        dann poste mal bitte deinen Script.
        also nicht nur preg_replace(), sonder so wie du es in deinem Script hast.

        So wie ich es verstanden habe gehts glaub ich auch so:

        <?php
        $text = "Hallo [DU]";

        $text = str_replace("[", "(", $text);
        $text = str_replace("]", ")", $text);

        echo $text;
        ?>

        Als Ausgabe bekommt man:

        Hallo (DU)

        evt. kannst du das ja gebrauchen.

        MFG
        Andavos

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
        1. Hoi,

          naja hatte mir grade ein kleines Tetsscript erstellt.

          <?php
          $pattern = "/lol/";
          $ersatz = "rofl";
          $test = preg_replace($pattern, $ersatz, "[a]lol[/a]");
          echo $test;
          ?>

          Da wird alles korrekt gemacht und es wird [a]rofl[/a] ausgegeben.
          Wenn ich aber /[a]lol[/a]/ oder /[a]lol[/a]/ verwende, gibt
          er mir eine Fehlermeldung aus.

          Nunja wollte das aber dann so in mein Gästebuch integieren später,
          dass wenn der Nutzer [a]http://www.test.de[/a] eingibt, dies durch <a href="http://www.test.de">http://www.test.de</a> ersetzt wird.

          Und dazu kann ich str_replace schlecht verwenden.

          1. Hi,

            Da wird alles korrekt gemacht und es wird [a]rofl[/a] ausgegeben.
            Wenn ich aber /[a]lol[/a]/ oder /[a]lol[/a]/ verwende, gibt
            er mir eine Fehlermeldung aus.

            Und? Sollen wir jetzt raten, welche?
            Oder gibt es einen anderen Grund, warum Du uns die Fehlermeldung verschweigst?

            cu,
            Andreas

            --
            Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
            http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
            1. Hoi,

              oh sry^^

              Warning: Unknown modifier 'a' in /home2/juliusha/public_html/pattern.php on line 4

              das sagter mir :-/

              mfg
              Julius

              1. Hi,

                Warning: Unknown modifier 'a' in /home2/juliusha/public_html/pattern.php on line 4

                Du mußt selbstverständlich ALLE Zeichen, die eine Sonderbedeutung haben, maskieren, wenn Du ihnen diese Sonderbedeutung nehmen willst.
                / hat die Sonderbedeutung, den regulären Ausdruck zu beginnen und zu beenden.

                cu,
                Andreas

                --
                Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
                http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
                1. Hoi,

                  Du mußt selbstverständlich ALLE Zeichen, die eine Sonderbedeutung haben, maskieren, wenn Du ihnen diese Sonderbedeutung nehmen willst.
                  / hat die Sonderbedeutung, den regulären Ausdruck zu beginnen und zu beenden.

                  Ja das weis ich.
                  Deswegen sind sie ja da.
                  Und deswegen maskier ich sie auch nicht.
                  Wenn ich sie maskier meldeter mir
                  Warning: Delimiter must not be alphanumeric or backslash in /home2/juliusha/public_html/pattern.php on line 4

                  Also wenn ich die eckigen Klammern maskiere dann schaut das ganze ja so aus:

                  <?php
                  $pattern = "/[a]lol[/a]/";
                  $ersatz = "rofl";
                  $test = preg_replace($pattern, $ersatz, "[a]lol[/a]");
                  echo $test;
                  ?>

                  mfg
                  Julius

                  1. Hi,

                    Du mußt selbstverständlich ALLE Zeichen, die eine Sonderbedeutung haben, maskieren, wenn Du ihnen diese Sonderbedeutung nehmen willst.
                    / hat die Sonderbedeutung, den regulären Ausdruck zu beginnen und zu beenden.
                    Ja das weis ich.
                    Deswegen sind sie ja da.
                    Und deswegen maskier ich sie auch nicht.

                    Die äußeren nicht, aber:

                    $pattern = "/[a]lol[/a]/";

                    ^
                                              ^
                    cu,
                    Andreas

                    --
                    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
                    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
                    1. Hoi,

                      $pattern = "/[a]lol[/a]/";

                      Oh ok sorry hab ich ganz vergessen.
                      *sich an den Kopf hau*
                      Die hät ich auch sehen müssen.
                      Jetzt gehts.

                      Thx!

                      mfg
                      Julius