我需要某种方式来捕获方括号之间的文本。因此,例如,以下字符串:
[This] is a [test] string, [eat] my [shorts].
可用于创建以下数组:
Array ( [0] => [This] [1] => [test] [2] => [eat] [3] => [shorts] )
我有以下正则表达式,/\[.*?\]/但它仅捕获第一个实例,因此:
/\[.*?\]/
Array ( [0] => [This] )
如何获得所需的输出?请注意,方括号从不嵌套,因此不必担心。
匹配所有带括号的字符串:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[[^\]]*\]/", $text, $matches); var_dump($matches[0]);
如果要不带括号的字符串:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[([^\]]*)\]/", $text, $matches); var_dump($matches[1]);
不带括号的替代版本,较慢的匹配版本(使用“ *”代替“ [^]”):
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[(.*?)\]/", $text, $matches); var_dump($matches[1]);