Mailinglisten-Archive |
Marcel Kurz schrieb: > Hallo Sebastian, > >> du musst \ doppelt escapen also, \\\\ >> >> $pattern = '/\[KNR\](.*?)\[\\\\KNR\]/is'; > kannst du mir das noch mal genauer erklären ? > Wenn ich \ escapen will dann hab ich gedacht ich muss nur > ein \ davorsetzen also \\ schreiben bei dir setze ich ja > DREI \\\ vor das eigentliche \... "DREI \\\ vor ..." ist nicht ganz richtig, denn es sind nicht drei davor sondern eins \ -> \\ - aber diese zwei sind jeweils nochmal escaped also \\ plus \\ das ergibt dann vier \\ -> \\\\ wie Yannik schon richtig bemerkt, das erste escapen ist für PHP: macht also aus \\\\ -> \\ und das zweite ist den REGEX-Parser \\ -> \ > bei den [ langt ja auch nur ein \ um zu escapen > jetzt bin ich etwas verwirrt... weil [ auch keine besondere Bedeutung in PHP Strings hat, deshalb muss auch nur für den REGEX-Parser escaped werden, aber nicht für PHP - wenn es eine Bedeutung hätte wäre der erste Backslash für den REGEX-Parser-> \[ und beide Zeichen müssten nochmal für PHP escaped werden \\\[ sprich du musst dir immer erst überlegen was der REGEX-Parser braucht, und wenn du das dann in einen PHP-String schreibst nochmal alle Zeichen die eine besondere Bedeutung in PHP Strings haben escapen SUCHE = foo\bar REGEX = foo\\bar PHP = 'foo\\\\bar' wobei das davon abhängt welche quotes du nimmst SUCHE = 'foo'\$["bar"] REGEX = 'foo'\\$\["bar"\] PHP = '\'foo\'\\\\$\["bar"\]' PHP = "'foo'\\\\\$\\[\"bar\"\]" (wenn ich mich jetzt nicht vertan habe) -- Sebastian Mendel
php::bar PHP Wiki - Listenarchive