Hello,
Nun ist es so, dass im resultierenden Ausdruck ein Backslash ankommt. Da aber auch bei den Regular Expressions der Backslah für die Maskierung benutzt wird, würde der nun wiederum als Maskierungszeichen für das nachfolgende Zeichen betrachtet werden. Du musst ihn also auch maskieren. Das führt dann irgendwann zu dem Ausdruck
$search=preg_replace("/[,;:.\\/]/" , " " , $search);
Ich glaube, dir ist ein Fehler unterlaufen: In PHP-Strings muss der einfache slash doch nicht maskiert werden. Aber die Backslashes (für die REGEX braucht man ja zwei, einen für den Backslash und einen um den Backlsash zu maskieren) müssen beide maskiert werden. Deshalb muss der Ausdruck wahrscheinlich so lauten (ich habe Slash und Backslash ein wenig getrennt):
$search=preg_replace("/[,;\\\\:.\/]/" , " " , $search);
Mir war da tatsächlich noch ein Fehler unterlaufen. Da du den normalen Slash als Begrenzungszeichen für das Muster nimmst, muss der mMn in der Zeichenklasse auch maskiert werden.
$search=preg_replace("/[,;\\\\:.\\/]/" , " " , $search);
Damit der Maskierungs-Backslash aber durch PHP durchschlüpfen kann, muss er seinerseits maskiert werden.
Einfacher würde es aussehen, wenn Du
$search=preg_replace('/[,;\:.\/]/' , ' ' , $search);
oder
$search=preg_replace('~[,;\:./]~' , ' ' , $search);
schreiben würdest.
Und das läuft dann unter dem Motto: "Einer kam durch".
Das heißt?
Na, von vier Backslashes kommt nachher nur einer bei der Auswertelogik an.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg