2009-09-16 82 views
5

我已经试过“米”修饰符,但不工作:如何在PHP中启用正则表达式的空白不敏感模式?

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

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

编辑

或者,也许我需要修改,可以忽略空格像ENTER,TAB等。 因为当我删除我的正则表达式中的空白时,它就起作用了。

再次编辑

我需要修改,这样的正则表达式

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

是一样的,也就是说,它只是忽略正则表达式本身的空白。

+0

你能否详细说明您的情况有更多的上下文信息的空白? – Eimantas 2009-09-16 06:22:47

+0

是的,知道你的正则表达式会有帮助。如果需要,默认情况下不匹配新行。以真正匹配任何使用s修饰符... – RageZ 2009-09-16 06:24:55

+0

其他部分都可以,但我需要正则表达式分析器忽略正则表达式中的空格,如何? – omg 2009-09-16 06:26:36

回答

8

你需要的修改是x

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

终于有人了解我!干杯!聪明人! – omg 2009-09-16 06:40:40

0

在正则表达式中,您可能有点不匹配新行的问题。你可以使用s修改器,它会使点匹配所有东西甚至是新线。

希望这有助于

它会给

/aaaaaaa.+b/ms 

,因为这取决于你的编辑器(UNIX或Windows)换行可能是不同的字符,CR也将是一个更好的做法是使用\ N + LF或仅LF ...因此您的代码将不可移植。

,或者确实忽略了reg前

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

我需要在正则表达式中使用RETURN,因为它很长。否则它很难看到它在做什么。无论如何,以某种方式,有这样的要求。但是如何启用这种模式? – omg 2009-09-16 06:39:16