用于查找和替换 @ 提及(如 Twitter)的正则表达式

发布于 2024-11-19 21:51:54 字数 577 浏览 1 评论 0原文

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

  1. 如果只有 @ 并且前后没有任何内容,则不应替换它。
  2. 电子邮件中的@不应被替换。例如。 [电子邮件受保护] 不应替换。
  3. 只有像 @sam@example 这样的字符串才应该被替换为 @sam< /a>@example

请帮忙。提前致谢。

I am developing a PHP application which needs a regular expression to replace the @ mentions like twitter. Also the regular expression should satisfy the following needs.

  1. if there is just @ and nothing before and after that then it should not be replaced.
  2. @ in the emails should not be replaced. For eg. [email protected] should not be replaced.
  3. Only strings like @sam or @example should be replaced like <a href="http://twitter.com/sam">@sam</a> and <a href="http://twitter.com/example">@example</a>

Please help. Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

断念 2024-11-26 21:51:54

哇。我自己找到了答案。

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

谢谢你们的帮助。

Wow. I found the answer myself guys.

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

Thanks for your help guys.

草莓酥 2024-11-26 21:51:54

怎么样——

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

How about something like -

(?<!\w)@[\w]+
牛↙奶布丁 2024-11-26 21:51:54

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

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

As twitter can contain up to 15 characters, you could write it like this to avoid some bugs:

$tweet = preg_replace("/(^\w)@(\w{1,15})/i", "\\1<a ref=\"http://twitter.com/\\2\">@\\2</a>", $tweet);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文