phpbar.de logo

Mailinglisten-Archive

[php] Regex Problem

[php] Regex Problem

Yannik Hampe yannik at cipher-code.de
Mon Jun 30 21:46:58 CEST 2008



Marcel Kurz wrote:
> Hallo Sebastian,
> 
>> du musst \ doppelt escapen also, \\\\
>>
>> $pattern = '/\[KNR\](.*?)\[\\\\KNR\]/is';
> kannst du mir das noch mal genauer erklären ?

Damit sowas:
echo 'wie geht's?';
möglich ist (so geht es ja nicht, php denkt dann ja, der String wäre 
nach dem "geht" zu Ende) kann man
echo 'wie geht\'s?'; // Ergebnis: wie geht's?
schreiben. Und wenn du als
Ergebnis: Bla\'
haben willst, kannst du
echo 'Bla\\';
schreiben.

Wenn dein php dieses hier parst:
$regex ='/\[KNR\](.*?)\[\\\\KNR\]/is';
steht in $regex also
dies: '/\[KNR\](.*?)\[\\KNR\]/is
Dann kommt die Regexmaschine, die genau das gleiche Problem hat: 
Bestimmte Zeichen haben Sonderfunktionen (zum Beispiel '['). Und wenn du 
  nicht willst, dass die diese besondere Bedeutung haben...
Mir ist zwar gerade nicht bewusst, dann \K eine spezielle Bedeutung hat, 
aber prinzipiell tust du nicht schlecht daran alle deine escaped doppelt 
durchzuführen. Es schadet nicht und dein Programm geht nicht den Bach 
runter, wenn mal ein neuer Befehl hinzu kommt.

> Wenn ich \ escapen will dann hab ich gedacht ich muss nur
> ein \ davorsetzen also \\ schreiben bei dir setze ich ja
> DREI \\\ vor das eigentliche \...
> bei den [ langt ja auch nur ein \ um zu escapen
> jetzt bin ich etwas verwirrt... 
> aber deine Lösung funktioniert auch danke...
> 
> Beste Grüße
> Marcel 

Yannik

php::bar PHP Wiki   -   Listenarchive