Moin allerseits,
Du machst es Dir auch nicht leicht :-)
So, wie ich es kann...
Innerhalb von PHP ist der Backslash in Strings mit doppelten Anführungszeichen ein Maskierungszeichen/Escapezeichen für viele Sonderbedeutungen.
siehe: http://de2.php.net/manual/de/language.types.string.phpIn einem String, der durch einfache Anführungszeichen eröffnet wurde, maskiert der Backslash immer noch das Anführungszeichen.
Aha... Kontext im Kontext...
Wenn Du also nun in dem Ausdruck
$search=preg_replace("/[,;:./]/" , " " , $search);
einen Backslash eingeben willst, dann müsste der also aus PHP-Sicht verdoppelt werden.
Hm, das funtkionierte bei mir mit dem einfachen Slash oben aber bisher...
$search=preg_replace("/[,;:.\/]/" , " " , $search);
So etwas brauchte ich nicht...
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);
Und das läuft dann unter dem Motto: "Einer kam durch".
Das heißt?
Grüße, JN
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de