2009-09-16 14 views
5

Próbowałem "M" modyfikator, ale nie działa:Jak włączyć niewrażliwy tryb wyrażeń regularnych w PHP?

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

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

EDIT

Albo muszę modyfikator, które można zignorować białe miejsca takie jak ENTER, TAB i tak dalej. Ponieważ po usunięciu spacji w moim regex działa.

Edycja ponownie:

muszę modyfikator tak, że wyrażenie regularne

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

to samo, powiedzmy, po prostu ignoruje spacje w samej regex.

+0

można rozwinąć swoją sytuację więcej szczegółów kontekście? – Eimantas

+0

tak, wiedząc, co pomoże ci również twoja regularna ekspresja. domyślnie nie pasuje do nowej linii, jeśli potrzebujesz. aby dopasować naprawdę wszystko, użyj modyfikatora s ... – RageZ

+0

Inne części są w porządku, ale potrzebuję parsera regex, aby ignorować białe spacje w regex, jak? – omg

Odpowiedz

8

Modyfikator potrzebne jest x

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

Wreszcie jeden mnie rozumie! Zdrówko! Sprytny facet! – omg

0

Prawdopodobnie masz problem z kropkami, które nie pasują do nowych linii w twoim wyrażeniu regularnym. Możesz użyć modyfikatora s, który sprawi, że kropki będą pasowały do ​​wszystkiego, nawet do nowej linii.

Nadzieja to pomaga

dałoby

/aaaaaaa.+b/ms 

Również byłoby lepsze praktyki do korzystania \ n, ponieważ w zależności od edytora (Unix lub Windows) nowej linii mogą być różne znaki CR + LF lub tylko LF ... więc twój kod nie będzie przenośny.

czy naprawdę ignorować spacje w reg ex

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

Muszę użyć RETURN w regex, ponieważ jest bardzo długi. W przeciwnym razie trudno będzie zobaczyć, co na ziemi robi. W każdym razie, jest jakikolwiek taki wymóg.Ale jak włączyć ten tryb? – omg

Powiązane problemy