【发布时间】:2015-08-30 03:46:44
【问题描述】:
我正在尝试设计一个评论/回复系统,就像 stackoverflow 中的系统一样,如果在评论中提到@username,则会向他发送通知。
以评论为例
$comment="hello @myname and @my-name and @my+name and @my%name and @my&name and @my_name and @my name @my/name and @3535 and @12";
问题是我的代码
if(preg_match('~@([^\s]+)~', $comment, $matches)){
print_r($matches);
}
只查找用户名@myname。有没有办法解决这个问题,以便它检测到所有用户名?
此外,上面评论中提到的哪些用户名是 stackoverflow 中的有效用户名,例如 my-name、my%name 有效用户名,当它们在 stackoverflow 评论中被提及时被检测到。
最后,是否可以将我的评论示例中的每个有效username 替换为<strong>username</strong>?
【问题讨论】:
-
preg_match_all 执行全局匹配。
-
哪些用户名在溢出中有效?
-
this answer on meta 中的 “名称如何匹配?” 可能对您有用。