【问题标题】:PHP user tagging systemPHP用户标签系统
【发布时间】:2014-07-07 01:29:29
【问题描述】:

所以我在做研究的时候并没有在网上找到任何关于这个话题的东西。基本上我想做的就是允许人们在他们的帖子中“标记”其他用户。喜欢

@Bob, SO is a great place!

然后,一旦我知道用户名已被标记,我就会处理通知并通知用户。所以我的问题是我将如何处理这个问题。我正在尝试实现类似 Twitter 标记系统的功能,如果您单击该标记,它会将您带到用户个人资料。我会使用正则表达式并从@? 中剔除用户名吗?他们是否有任何库可以让它更容易?任何帮助都会很棒。

【问题讨论】:

  • 这似乎更像是一个文章标签。而且只有 SQL 示例。不知道如何使用 PHP 是我的问题@Jatin
  • @user3100859 那么您的问题是“如何从头开始设置标记系统?”与源代码?那你的问题太笼统了。如果它是关于将@username 与正则表达式匹配,那么周围已经有一些重复了。我没有看到遇到的技术问题。此网站不是教程请求网站。
  • 我要求的是指南,而不是教程。我想要的只是某个方向。正如您所说的此站点不是教程请求站点。你能解释一下this 或者this,哦,甚至this? @HamZa
  • @user3100859 我不想深入探讨您链接的问题。但是第一个相当老了(stackoverflow 在过去没有那么严格),第二个不是教程请求,第三个是关于编程语言的某个特性的解释。你最好去chatroomIMO,因为关于如何解决这个问题的意见可能会有所不同。同样,这不是一个特定的编程问题。所以也可能太宽泛了。

标签: php regex


【解决方案1】:

您可以使用 textntag 插件进行 @ 或 # 标记,其完全可编辑,核心文件可以根据您的特定需求进行简单编辑。 http://daniel-zahariev.github.io/jquery-textntags

【讨论】:

    【解决方案2】:

    获取不带@ 的@username 的正则表达式是:

    (?<=@)[\p{L}\p{N}]+
    

    此正则表达式假定用户名仅由 unicode 字母字符和数字组成。 它也适用于德语变音符号:Ü,ü,Ä,ä,Ö,ö,ß

    【讨论】:

      【解决方案3】:

      整个逻辑就在这几行。查找帖子中的所有@names,在您的数据库中找到他们的电子邮件并向他们发送通知。

      <?php
      
      $id = 551; // id of this post which is unique
      $post = "@Bob, SO is a great place! Even @John is here"; // post content
      $pattern = '/@([a-zA-Z0-9]+)/'; // the pattern to extract all nicknames (without @)
      preg_match_all($pattern, $post, $matches);
      
      // let's select all these users in order to retrieve their emails
      $query = "SELECT nickname, email FROM users WHERE nickname IN ('" . implode("', '", $matches[1]) . "')";
      $results = $mysqli_query($query);
      
      while($row = $mysqli_fetch_array($results, MYSQLI_ASSOC)){
          // send an email and a link to the post where he/she has been tagged / mentioned 
          mail($row["email"], "Subject", "Hello " . $row["nickname"] . " someone tagged you. <a href='http://domain/posts/" . $id . "'>Take a look</a>");    
      }
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 2013-10-07
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 2020-10-18
        • 1970-01-01
        • 2010-10-07
        相关资源
        最近更新 更多