Marc Reichelt: RegEx - Alle Spezialzeichen maskieren

Beitrag lesen

Hallo Ben,

Ich habe jetzt probiert, im Eingabe-String einfach alle vorkommen dieser Zeichen mit <Spezialzeichen> zu ersetzen. Aber z.B. bei $ gibt das irgendwie komische Ergebnisse beim suchen.

Deine Vorgehensweise ist korrekt. Bei dem Dollar-Zeichen musst du aber die Spezialfunktion in PHP sehen:

  
$counter = "1234";  
$text    = "Sie sind der $counter. Besucher dieser Webseite.";  

Hier dient also das Dollarzeichen als Indikator dafür, dass nun eine Variable kommt - bei doppelten Anführungszeichen. Würde man die zweite Zeile in einfache Anführungszeichen setzen, so würde die Variable dort nicht ersetzt werden.

Wahrscheinlich hast du also folgenden String als Regex-String für das Dollarzeichen genommen:
"$"

Damit verliert das Dollarzeichen seine Funktion als Variableneinleiter, nicht jedoch für das Regex (denn der eigentliche String enthält so nur das Dollarzeichen, ohne den Backslash vorne dran).

Was du suchst, ist also:
'$' bzw. "\$"

Generell ist mein Tipp bei Regulären Ausdrücken, stets einfache Anführungszeichen zu verwenden. Das erspart einem jede Menge Ärger.

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
http://emmanuel.dammerer.at/selfcode.html