2012-07-23 74 views
0

我有以下代碼Preg Match Spaces&New Lines?

$pattern = '#\bset_message\("(.*?)"\)#'; 
$found = preg_match($pattern, $string, $matches); 

但如果我的$ string是

set_message("Hello there 
I like 
to 
eat 
CHEES!"); 

它不會返回匹配任何東西,但它如果我使用

set_message("Hello there!"); 

如何我可以添加新的行和類似的東西(\ r \ n,\ n等)嗎?

+0

哪有模式'\ bset_message \( 「?(*)」 \ )'匹配一個像''你好!'的字符串'''?您的帖子中缺少某些內容。可能你需要在你的正則表達式中加入'/ s' [modifier(PCRE dotall)](http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php)? – 2012-07-23 18:57:32

+0

哈哈,你是對的。編輯。 – Steven 2012-07-23 18:57:55

+0

閱讀我上面評論中的鏈接,然後你就會明白([PCRE dotall](http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php))。 – 2012-07-23 19:00:31

回答

2

只需使用m修飾符。

$pattern = '#\bset_message\("(.*?)"\)#m'; 

當你想要的.可能意味着\n還,您需要同時使用m' and s`修飾符:

$pattern = '#\bset_message\("(.*?)"\)#ms'; 
+0

由於某些原因,這仍然不起作用...有什麼地方具體我需要把'm'?我把它放在線的盡頭,但似乎沒有工作。 – Steven 2012-07-23 18:57:06

+0

也加''',如果你想匹配換行符; '#...#sm' – 2012-07-23 18:58:21