当你写@moustafa
将更改为<a href='user/moustafa'>@moustafa</a>
现在我想要做同样的事情
写@moustafa + space时,只改变@moustafa
答案 0 :(得分:3)
您正在寻找与@username匹配的正则表达式,其中用户名没有空格?您可以使用:
@[^ ]+
如果您知道用户名中允许的字符,则可以更具体,例如,如果它们必须是字母数字:
@[A-Za-z0-9]+
答案 1 :(得分:3)
可以使用的一个正则表达式(从另一个答案中提到的@anywhere javascript library无耻地被盗)将是:
\B\@([a-zA-Z0-9_]{1,20})
这会查找非字边界(以防止a@b
[即电子邮件]匹配),然后是@
,然后是该字符类中的1到20个(包括)字符。当然,任何 - 除了空间路线,如在其他答案中;它在很大程度上取决于@label
的标签部分允许的值(dis)。
要在PHP中使用突出显示的正则表达式,可以使用以下内容替换字符串$subject
。
$subject = 'Hello, @moustafa how are you today?';
echo preg_replace('/\B\@([a-zA-Z0-9_]{1,20})/', '<a href="user/$1">$0</a>', $subject);
以上输出如下:
Hello, <a href="user/moustafa">@moustafa</a> how are you today?
答案 2 :(得分:0)
为什么不使用Twitter最近发布的@anywhere javascript library?
答案 3 :(得分:0)
PHP中的正则表达式只是以相同字符开头和结尾的字符串。按照惯例,这个角色是/
所以你可以使用这样的东西作为任何一个php正则表达式函数的参数:
不是空格:
"/[^ ]+/"
仅限字母数字:
"/[A-Za-z0-9]+/"
答案 4 :(得分:0)
有几个库可以为您执行此选择和链接。目前我在mzsanford的Github帐户下了解Java,Ruby和PHP库:http://github.com/mzsanford/twitter-text-rb