正则表达式查找和替换像twitter这样的@ mentions

时间:2011-07-13 04:04:09

标签: php regex preg-replace

我正在开发一个PHP应用程序,它需要一个正则表达式来替换像twitter这样的@ mentions。正则表达式也应满足以下需求。

  1. 如果只有@之前和之后没有任何内容,那么就不应该替换它。
  2. 不应替换电子邮件中的
  3. @。例如。 sam@example.com不应该被替换。
  4. 只应更换@sam@example等字符串,例如<a href="http://twitter.com/sam">@sam</a><a href="http://twitter.com/example">@example</a>
  5. 请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:2)

哇。我自己找到了答案。

$tweet = preg_replace('/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '$1<a href="http://twitter.com/$2">@$2</a>', $tweet);

感谢您的帮助。

答案 1 :(得分:1)

怎么样 -

(?<!\w)@[\w]+

答案 2 :(得分:1)

由于Twitter最多可包含15个字符,因此您可以这样写它以避免一些错误:

$tweet = preg_replace("/(^\w)@(\w{1,15})/i", "\\1<a ref=\"http://twitter.com/\\2\">@\\2</a>", $tweet);