Andavos: Etwas ersetzten, egal ob groß oder klein

Hallo,

Also man kann einen Text ja so ersetzen:

$var1 = "[test] test";
$var1 = str_replace("[test]", "TEST", $var1);
echo $var1;

Ausgabe:
TEST test

Aber das geht nicht:
$var1 = "[TeSt] test";
$var1 = str_replace("[test]", "TEST", $var1);
echo $var1;

ich weiß auch warum, aber wie kann ich das ändern ;)

ich weiß das eregi_replace nicht zwischen groß und klein Unterscheidet, aber das führt auch nicht zum gewünschten Effekt.

$var1 = "[TeSt] test";
$var1 = eregi_replace("[test]", "TEST", $var1);
echo $var1;

Ausgabe:
[TESTTESTTESTTEST] TESTTESTTESTTEST

Naja das wollte ich ja nicht haben. Ich denke das liegt an den Klammern, aber auf die kann ich nicht verzichten.

Deswegen meine Frage: Kann ich das andern lösen, ohne alle möglichen Varianten aufzuschreiben?

MFG
Andavos

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

    Deswegen meine Frage: Kann ich das andern lösen, ohne alle möglichen Varianten aufzuschreiben?

    In PHP5 wird es anscheinend str_ireplace() geben, die wird das Gewünschte können. Bis dahin musst du dich mit einer eigenen Funktion begnügen. In den User Contributed Notes zu str_replace() ist u.A. eine Lösung beschrieben.

    Bis denne,

    1. Hallo,

      User Contributed Notes <- Was ist das?

      Naja bis PHP 5 kommt dauert das wohl noch :(

      MFG
      Andavos

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

        User Contributed Notes <- Was ist das?

        Einfach mal auf http://php.net/str_replace und dann nach "User Contributed Notes str_replace" suchen.

        Das sind die Kommentare, die auf eigentlich jeder Manual-Seite unten drunter stehen, wo auch oft mal nuetzliche Tips dabei sind.

        MfG
        Götz

        --
        Losung und Lehrtext für Donnerstag, 18. Dezember 2003
        Der Herr ist des Armen Schutz, ein Schutz in Zeiten der Not. (Psalm 9,10)
        Alle eure Sorge werft auf ihn; denn er sorgt für euch. (1.Petrus 5,7)
        (http://www.losungen.de/heute.php3)
  2. Hallo Andavos,

    $var1 = eregi_replace("[test]", "TEST", $var1);

    wie wär's mit eregi_replace("[test]", "TEST", $var1); ?

    Gruß,
    small-step

    1. Hallo,

      cool, danke es geht

      MFG
      Andavos

      --
      http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
  3. Hallo Andavos,

    auch wenn es inzwischen funktioniert noch eine kleine Erläuterung:

    $var1 = "[TeSt] test";
    $var1 = eregi_replace("[test]", "TEST", $var1);
    echo $var1;

    Ausgabe:
    [TESTTESTTESTTEST] TESTTESTTESTTEST

    mit den eckigen Klammern ('[' und ']') definierst du in regulären Ausdrücken eine Zeichenklasse - du willst allso jedes Zeichen das in dieser Zeichenklasse steht (also 't','e' und 's') durch 'TEST' ersetzen - und genau das macht deine Funktion :-) Um Sonderzeichen verwenden zu können musst du sie mit einem \ maskieren (siehe auch http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#zeichen).

    statt eregi_replace solltest du aber preg_replace verwenden (wobei du noch ein 'i' am Ende des Ausdrucks (damit Groß-/Kleinschreibung ignoriert wird) sowie Begrenzer (keine Ahnung, ob die wirklich so heißen :-)) brauchst):

    echo preg_replace('/[test]/i','TEST','[TeSt] test');
    //sollte (habs nicht getestet) '[TEST] test' ausgeben

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|