为了账号安全,请及时绑定邮箱和手机立即绑定

在PHP中捕获方括号之间的文本

/ 猿问

在PHP中捕获方括号之间的文本

饮歌长啸 2019-10-19 14:54:49

我需要某种方式来捕获方括号之间的文本。因此,例如,以下字符串:


[This] is a [test] string, [eat] my [shorts].


可用于创建以下数组:


Array ( 

     [0] => [This] 

     [1] => [test] 

     [2] => [eat] 

     [3] => [shorts] 

)

我有以下正则表达式,/\[.*?\]/但它仅捕获第一个实例,因此:


Array ( [0] => [This] )

如何获得所需的输出?请注意,方括号是从不嵌套的,因此不必担心。


查看完整描述

2 回答

?
慕勒3428872

匹配所有带括号的字符串:


$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]);


查看完整回答
反对 回复 2019-10-19
?
MM们

奇怪的是,我现在得到以下信息:Array ( [0] => Array ( [0] => [This] [1] => [test] [2] => [eat] [3] => [shorts] ) [1] => Array ( [0] => This [1] => test [2] => eat [3] => shorts ) ) 

查看完整回答
反对 回复 2019-10-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信