我想获取[square] [brackets]
内的字符串以及那些@like @this
。以下内容适用于 [tags]
,但不适用于 @users
。
$query = "[tag1] [tag2] @user1 @user2 ignoreme";
// check for tags e.g. [tag1] [tag2]
preg_match_all("/\[([^\]]+)\]/", $query, $tags);
// check for users e.g. @username
preg_match_all("/\B@[^\B]+/", $query, $users);
print_r($tags);
print_r($users);
输出:
(
[0] => Array
(
[0] => [tag1]
[1] => [tag2]
)
[1] => Array
(
[0] => tag1
[1] => tag2
)
)
Array
(
[0] => Array
(
[0] => @user1 @user2 ignoreme
)
)
标签 preg_match
正在工作,但 @user 标签只抓取其后的所有内容(甚至忽略第二个 @user2)。
最佳答案
如果你看一下这个解释:http://regex101.com/r/fH4lG4你会发现你的正则表达式被破坏的原因。
您正在匹配除文字 B
之外的所有内容。
您应该做的是 [^@]+
、[^@ ]+
或 \S+
我希望这有帮助:)
关于php - Preg 匹配方括号和 @strings 内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14147399/