我正在寻找一种使用正则表达式获取文本的方法,该文本位于2个方括号和方括号之间。例如:
$text = "[[ Hello I like trains ] [ I'm hungry ]]
[[ I smell good ] [ I use stackoverflow ]]"
//多数民众赞成在一个字符串,中断只是为了更容易看到,有两个“ [[...]]”句子
我现在需要的是一个看起来像这样的数组:
$array = [
0 => "[Hello I like trains] [I'm hungry]",
1 => "[I smell good] [I use stackoverflow]"
];
我尝试过的是:
if (preg_match_all('\[\[(.*?)\]\]', $text, $matches)) {
dd($matches);
} else return "hello";
我得到的是:
preg_match_all(): Delimiter must not be alphanumeric or backslash
说实话,我对regex并不是很熟悉。
我只希望正则表达式切出介于[[[“”]]“之间的文本。但是结果中必须有双方括号的第一个“ [”和最后一个“]”,并且不应将其删除。
如此
"[[ Hello I like trains ] [ I'm hungry ]]"
将是
"[ Hello I like trains ] [ I'm hungry ]"
最后。
如果还有更多的[[[“”]]“句子,则正则表达式应将其放在数组中。就像上面的示例结果数组一样。
我正在使用PHP / Laravel 5.6
答案 0 :(得分:0)
您需要这样的东西
if (preg_match_all('/\[(\[(.*?)\])\]/is', $text, $matches)) {
print_r($matches[1]);
} else return "hello";