Etwas ersetzten, egal ob groß oder klein
Andavos
- php
0 Hubert0 small-step0 Tobias Kloth
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
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,
Hallo,
User Contributed Notes <- Was ist das?
Naja bis PHP 5 kommt dauert das wohl noch :(
MFG
Andavos
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
Hallo Andavos,
$var1 = eregi_replace("[test]", "TEST", $var1);
wie wär's mit eregi_replace("[test]", "TEST", $var1); ?
Gruß,
small-step
Hallo,
cool, danke es geht
MFG
Andavos
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