所以我的项目目前有以下代码行。
if(preg_match_all('/(?<=^|\s)@(\w+)/', $content, $match)) {
现在问题是,如果用户名称有标点符号(例如?Dennis或-Damo),则不允许@标签提取用户名,例如@ -Damo或@?Dennis不会标记用户(代码跟在此行之后。
我知道如何修改上述内容,以便@符号后允许使用标点符号
答案 0 :(得分:0)
如果你想捕捉@之后的所有内容,那么你可以选择......
if(preg_match_all('/(?<=^|\s)@(.+)/', $content, $match)) {
这基本上不关心@后的内容。
如果你想要特定的角色,那么也许......
if(preg_match_all('/(?<=^|\s)@([A-Za-z0-9?-]+)/', $content, $match)) {
注意最后一个 - 在那个班级。它与A-Z,a-z或0-9
之间的不同如果你想在@(但是可选)之后只有标点符号,那么
if(preg_match_all('/(?<=^|\s)@([?-]?[A-Za-z0-9]+)/', $content, $match)) {
答案 1 :(得分:0)
我最终使用了这段代码并完美地完成了它!
if(preg_match_all('/(?<FullMention>@(?<UsernameOnly>[a-zA-Z0-9,\-_]{1,}))/', $content, $match)) {
foreach($match['UsernameOnly'] as $usr) {
-code here-
}
}