Eckige Klammer bei regulären Ausdrücken
Julius Hacker
- php
0 Andavos0 Julius Hacker0 Andavos0 Julius Hacker0 MudGuard
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
Hallo,
ich denk mal mit einen Makierungszeichen.
Ein Backslash () einfach vor die Klammer setzten.
MFG
Andavos
Hoi,
Ein Backslash () einfach vor die Klammer setzten.
Damit geht es jedenfalls nicht :(
mfg
Julius
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
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.
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
Hoi,
oh sry^^
Warning: Unknown modifier 'a' in /home2/juliusha/public_html/pattern.php on line 4
das sagter mir :-/
mfg
Julius
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
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
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
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