你好 Christopher,
Ich lese gerade ein Buch über PHP und behandle die regulären Ausdrücke.
Dabei tritt einmal der Backslash als eigenes Zeichen auf, dennoch wird er
[...]
Du musst verstehen, wie PHP funktioniert. Die regulaeren Ausdruecke sind in
PHP durch die ereg_*- und preg_*-Funktionen implementiert, die Argumente
erwarten. Und da es fuer regulaere Ausdruecke keine extra Sprachmittel gibt
muss der Ausdruck als String uebergeben werden. Der String wird auch
entsprechend der Regeln interpretiert: aus "\" wird programm-intern "".
Das heisst, wenn du preg_match("/\/",$var) schreibst, dann kommt bei der
RegEx-Engine, als dem Stueck Programm, dass die regulaeren Ausdruecke
auswertet, nur ein Backslash an (). Und da ein Backslash fuer die
RegEx-Engine eine besondere Bedeutung hat (er maskiert naemlich das darauf
folgende Zeichen) musst du ihn auch fuer die Engine deaktivieren, indem du
ihn mit einem vorangestellten RegEx maskierst. Im Klartext: wenn du in
PHP preg_match("/\\",$var) schreibst, dann kommt bei der RegEx-Engine
\ an, weil aus "\\" nach dem Interpretieren des Strings nur ein doppelter
Backslash wird.
doppelt maskiert "/\/". Wieso verhält es sich so?
Eigentlich muesstest du sogar "/\\/" schreiben :)
再见,
CK