在PHP中的方括号之间捕获文本
我需要一些方法来捕捉方括号内的文本。 所以例如下面的string:
[This] is a [test] string, [eat] my [shorts].
可以用来创build以下数组:
Array ( [0] => [This] [1] => [test] [2] => [eat] [3] => [shorts] )
我有以下正则expression式,/ * [。 /\[.*?\]/
但它只捕获第一个实例,所以:
Array ( [0] => [This] )
我怎样才能得到我需要的输出? 请注意,方括号从不嵌套,所以这不是一个问题。
用括号匹配所有string:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[[^\]]*\]/", $text, $matches); var_dump($matches[0]);
如果你想要没有括号的string:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[([^\]]*)\]/", $text, $matches); var_dump($matches[1]);
替代scheme,没有方括号的较慢版本的匹配(使用“*”而不是“[^]”):
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[(.*?)\]/", $text, $matches); var_dump($matches[1]);