Zeichenfolgen \" ersetzen klappt nicht...
Chris
- php
Hallo
Ich möchte mit folgendem Befehl die Zeichenfolge " durch das Zeichen ' ersetzen:
<?php
...
ereg_replace(""","'",$text);
...
?>
Leider klappt dies nicht wie gewünscht. Nur das " Zeichen wird ersetzt, der Backslash jedoch nicht. Kann mir jemand den Grund für dieses komische Verhalten verraten und wie ich das lösen soll?
morgen
das kann so auch nicht klappen, weil der Backslash ein so genannter "Entwerter" ist. der wird vom php-Interpreter nur als markierungszeichen, dafür genutzt um das darauffolgene Zeichen also ", als ein normalen Zeichen darzustellen, und nicht als Stringbegrenzer. Wenn du \ und " entwerten willst musst du das entweder so schreiben:
"\"" oder so: '"'
Im ersten fall entwertest du den Backslash und das hochkomma. im zweiten fall benutzt du die einfachen hochkommas. Innerhalb dereinfachen hochkommas werden alle sonderzeichen als normale Zeichen ausgewertet.
grüße christian
Moin,
ereg_replace(""","'",$text);
Leider klappt dies nicht wie gewünscht. Nur das " Zeichen wird ersetzt, der Backslash jedoch nicht. Kann mir jemand den Grund für dieses komische Verhalten verraten und wie ich das lösen soll?
Der Backslash ist ein besonderes Zeichen, da er das nachfolgende Zeichen escaped. Normalerweise kannst du " innerhalb von " " doch gar nicht verwenden, da die Anführungszeichen sonst als beendet angesehen würden, wenn du einen Backslash davor stellst, wird aber das " von seiner Sonderbedeutung enthoben. Im Zusammenhang mit vielen anderen Zeichen (n ist das prominenteste Beispiel) verleiht der Backslash sogar eine Sonderbedeutung.
Die Abhilfe ist logisch: Du musst den Backslash vor seiner Sonderbedeutung schützen - mit einem Backslash.
ereg_replace("\"","'",$text) macht was du willst. (Das \ wird durch \ ohne Sonderbedeutung ersetzt, und das " durch " ohne Sonderbedeutung.)
--
Henryk Plötz
Grüße von der Ostsee
* Help Microsoft combat software piracy: Give Linux to a friend today! *