<?php
define('FIRST_MATCH_GROUP', 1);
$content = "Hello Guys how are you @[6] i hope you are doing well @[9]";
$tags = [];
preg_match_all("/@\[(.)\]/", $content, $tags); // Value under @[]
$tags = implode(',', $tags[FIRST_MATCH_GROUP]);
var_dump($tags);
1条答案
按热度按时间w6mmgewl1#
你可以用
preg_match_all
[1] 获取所有人之间的内容@[]
部分。那么implode
[2] 获取逗号分隔字符串的结果。工作示例:
https://3v4l.org/7kyh6
5.6.38-7.3.0rc3的输出
字符串(3)“6,9”
正则表达式解释:
https://regex101.com/r/cxh6l3/1/
/@[(.)]/
@按字面意思匹配字符@(区分大小写)
[匹配字符[字面意思(区分大小写)]
第一捕获组(.)
. 匹配任何字符(行终止符除外)
]匹配字符]字面意思(区分大小写)
编辑:对于介于
@[]
你必须把正则表达式调整到@\[(.+)\]
并添加一个不冻结的标志,请参见https://regex101.com/r/cxh6l3/2 以及https://3v4l.org/aj0ln