2009-09-16 11 views
5

Ich habe "m" Modifikator versucht, aber nicht funktioniert:Wie Whitespace-insensitive Modus des regulären Ausdrucks in PHP aktivieren?

$reg = '/... 
     /m'; 

preg_match($reg,...,$match); 

EDIT

Oder vielleicht brauche ich einen Modifikator, wie ENTER, TAB und so auf Leerraum ignorieren können. Weil, wenn ich den Leerraum in meinem Regex entferne, funktioniert es.

Erneut bearbeiten:

brauche ich einen Modifikator, so dass reguläre Ausdrücke

"/aaaa b/", 
"/aaaa 
b/" 

die gleiche Sache sind, sagen wir, es einfach ignoriert den weißen Raum in regex selbst.

+0

Sie Ihre Situation mit mehr Kontext Details erarbeiten könnte? – Eimantas

+0

ja, zu wissen, was Ihr regulärer Ausdruck ist, würde auch helfen. passt bei Bedarf nicht zur neuen Zeile. Um wirklich alles anzupassen, benutze den Modifier s ... – RageZ

+0

Andere Teile sind alle in Ordnung, aber ich brauche den Regex-Parser, um Leerraum in Regex zu ignorieren, wie? – omg

Antwort

8

Der Modifikator Sie brauchen, ist x

print_r(preg_match('/aaa 
     bbb/x', 'aaabbb')); 
+0

Endlich versteht man mich! Prost! Kluger Kerl! – omg

0

Sie haben wahrscheinlich ein Problem mit Punkten, die nicht mit neuen Zeilen in Ihrem regulären Ausdruck übereinstimmen. Sie können den s Modifikator verwenden, damit Punkte zu allem passen, sogar neue Zeile.

this helps

es

/aaaaaaa.+b/ms 

auch eine bessere Praxis \ n geben würde, wäre die Verwendung wegen Ihres Editor abhängig (Unix oder Windows) die Newline verschiedene Zeichen sein könnte, CR + LF oder nur LF ... also wird dein Code nicht tragbar sein.

oder wirklich Leerzeichen zu ignorieren in der reg ex

function formatRegEx($reg){ 
return preg_replace('/(\s+)/m', '\s+', $reg); 
} 
+0

Ich muss RETURN in Regex verwenden, weil es sehr lang ist.Andernfalls wird es schwer zu sehen, was um alles in der Welt es tut.Anyway, durch irgendwie, gibt es eine solche Anforderung.Aber wie diesen Modus zu aktivieren? – omg

Verwandte Themen