Tach!
Das erfordert zwei Backslashes, weil einer bereits für den String '\.jpg' draufgeht und dann noch einer im regulären Ausdruck ankommt.
Der backlash ging also nicht drauf.
Bitte? Der ist doch draufgegangen, wie deine Beispiele zeigen.
mysql> select name from pNamen where name regexp '\.ndrea'; +---------+ | name | +---------+ | Andreas | | Andrea | +---------+ 2 rows in set (0.00 sec)
In beiden Namen ist kein . enthalten. Der Punkt wird nicht maskiert und steht damit für „beliebiges Zeichen“. In dem Fall matcht er auf das A.
mysql> select name from pNamen where name regexp '\\.ndrea'; Empty set (0.00 sec)
Jetzt wird der Punkt maskiert, woraufhin dieser für sich selbst steht.
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 ".".
dedlfix.