dedlfix: PHPMyAdmin - SQL Befehl

Beitrag lesen

Tach!

PHP arbeitet anders als MySQL, wenn das maskierte Zeichen nicht in der Liste der Sonderzeichen (\r, \n, etc.) enthalten ist.

In PHP ergibt "\." trotzdem "\.", in MySQL jedoch ".".

(wohl gemeint: ?)

In PHP ergibt "\." trotzdem "\.", in MySQL jedoch ".".

Ich meinte einen Backslash gefolgt von einem Punkt (bei PHP in doppelten Anführungszeichen). PHP ignoriert die ungültige Escape-Sequenz und lässt beide Zeichen stehen, MySQL ignoriert den Backslash weg. (Aufgrund Gunnars Antwort korrigierte ich meine so, dass nun angezeigt wird, was ich zeigen wollte.)

Aber was zum Teufel soll dann das hier:

mysql> select * from pNamen where name regexp "\\\.jpg$";

Kontext ist erstmal der Statement-Parser. Die ersten beiden Backslashes sind die Escape-Sequenz für einen literalen Backslash. Die nachfolgende Sequenz Backslash-Punkt ergibt einen Punkt. Das ist eine ungültige Escapesequenz und da wird der Backslash wegignoriert. Ergebnis ist also Backslash-Punkt, das von der Regex-Maschine als literaler Punkt angesehen wird.

dedlfix.