PHP Regex并输入问题

Rev*_*ant 0 php regex enter


(preg_match_all("#\[level-(.+)-\](.+?)\[/level\]#", $string, $matches)
Run Code Online (Sandbox Code Playgroud)

问题


如果我$string用enter 赋值,我的正则表达式不起作用.

例:

//This doesn't work
$string = '[level-0-]This is a 
test[/level]';
//This works
$string = '[level-0-]This is a test[/level]';
Run Code Online (Sandbox Code Playgroud)

我想要的是


我想我的正则表达式无论是什么字符(输入等等)都可以工作.

如果有人能帮我解决这个问题,我会很高兴的.我仍然没有深入研究正则表达式,所以我对它并不那么好:(

mar*_*rio 6

你只需要你的正则表达式中的DOTALL标志/s.这允许点.匹配任何字符,包括换行符(默认情况下不会这样做).

preg_match_all("#\[level-(.+)-\](.+?)\[/level\]#s", ....
Run Code Online (Sandbox Code Playgroud)

另请参阅PCRE标志列表http://php.net/manual/en/reference.pcre.pattern.modifiers.php