preg_replace: Rückreferenzierung klappt nicht
Xava
- php
0 wahsaga0 Xava#
0 Patrick Canterino
Hallo!
Ich will folgendes mit der Funktion "preg_replace" erreichen:
Zeichen wie ".", "?", "*", etc. sollen jeweils ein Backslash ("") vorangestellt werden.
Hierzu mein bisheriger Code:
<?php
$string = "?";
$search = array ("/(.)/", "/(!)/", "/(?)/", "/(\*)/", "/(+)/");
$replace = "\$1";
$new_string = preg_replace ($search, $replace, $string);
?>
Nur leider funktioniert es so nicht. Es wird der String "$1" anstatt von "?" zurückgegeben.
Wenn man "\$1" durch "\ $1" ersetzt, so wird der String "\ ?" zurückgegeben.
Wie muss ich die Variable "$replace" definieren, sodass "?" zurückgegeben wird?
Im PHP-Handbuch (http://de.php.net/manual/de/function.preg-replace.php) habe ich leider nichts zur Problemlösung gefunden.
hi,
$replace = "\$1";
echo $replace;
ausgabe? (im quelltext)
gruß,
wahsaga
Hallo wahsage!
$replace = "\$1";
echo $replace;
ausgabe? (im quelltext)
Danke!
Folglich muss es richtig heissen:
$replace = "\\$1";
Hallo Xava,
Ich will folgendes mit der Funktion "preg_replace" erreichen:
Zeichen wie ".", "?", "*", etc. sollen jeweils ein Backslash ("") vorangestellt werden.
Mit quotemeta() oder preg_quote() geht das viel einfacher.
http://www.php.net/quotemeta
http://www.php.net/preg-quote
Viele Grüße
Patrick Canterino