dedlfix: REGEX Backslash, "Einer kam durch"

Beitrag lesen

Hi!

$search=preg_replace('/[,;\:.\/]/' , ' ' , $search);
Das ist mir jetzt auch interessant: Wenn ich einfache Anführungszeichen verwende, brauche ich den Backslash nicht mehr zu maskieren? Ich dachte, die REGEX erfordert immer, dass ich den Backslash maskiere. Oder geht das hier, weil dem Backslash ein : folgt, welches nicht maskiert werden braucht?
Das probiere mal bitte aus. Hier gilt mMn das Gleiche unselige Fuzzy-Verhalten, wie bei PHP. Da : kein Sonderzeichen repräsentiert, wird mMn auch \ und : weitergereicht. Besser wäre es aber mWn, wenn Du \ schreiben würdest. Das hast Du wohl Recht, dass das sauberer wäre.

Das Handbuch sagt da was anderes. Die PCRE-Engine wird außerhalb PHPs entwickelt, interessiert sich also nicht für dessen Escape-Logik. Ein Backslash maskiert in einem PCRE-Ausdruck ein nicht-alphanumerisches Zeichen immer, auch dann wenn eine Maskierung an der Stelle nicht notwendig gewesen wäre.

Ach, ich kann anstelle der / einfach ~ verwenden? Könnte ich theoretisch jeden Buchstaben verwenden?
Ja, Du kannst alle Zeichen verwenden, die keine Sonderbedeutung haben. Dann musst Du sie aber innerhalb des Musters escapen, wenn sie dann dort normal auftreten sollen. Der Backslash wäre daher eine sehr unglückliche Wahl...

Nicht raten, nachlesen.

Lo!