【问题标题】:Matching a list of possible hashtags in a tweet - Javascript or jQuery匹配推文中可能的主题标签列表 - Javascript 或 jQuery
【发布时间】:2012-02-28 00:03:12
【问题描述】:

首先,我查看了 Stackoverflow 上的很多帖子,但我没有看到一个似乎是最终方式的帖子。似乎总有人在正则表​​达式中发现缺陷。

我已经检索了我的推文,显然它们可以在每个推文中包含任意数量的主题标签。

如果我想找到一组可能的主题标签 - ["#ENGLAND","#IRELAND","#wales"] 等。

检查推文是否包含这些主题标签的可靠方法是什么。我不想再次调用 API,我只想检查我现有的推文,因为我正在点击按钮来动态更改过滤,如果他们一直点击很长时间,我想避免速率限制。

编辑:

示例:这是一条包含#ENGLAND 和#someothertag 的推文

我想搜索所有推文并只显示包含我的一个或多个标签数组的推文,我已经缓存了推文,我不想拨打包含任何标签的调用,只是过滤现有结果!

【问题讨论】:

  • Twitter API 包含一个标签字段,为什么不在最初获取数据时缓存它?
  • Twitter api 不会在响应的实体中返回推文的主题标签吗?
  • 我不明白,如果我说 4 个标签名称不同的按钮,如何在不再次调用 api 的情况下过滤结果?
  • @Neil 只是将实体存储为您存储推文的元素的属性,并使用 jquery 隐藏它
  • @menacingly 你能给我一个答案的例子吗?例如使用数据属性

标签: javascript regex twitter


【解决方案1】:

当您可以散列任何标签时,为什么只散列特定的标签(您需要指定然后维护)?

我通常使用这样的东西:

var hashregex = /#([a-z0-9_\-]+)/gi,
    text = text.replace(hashregex, function (value) {
       return '<a target="_blank" href="http://twitter.com/#!/search?q=' + value.replace('#', '%23') + '">' + value + '</a>';
    });

那么你可以在将内容设置为处理后的推文时使用text

【讨论】:

    【解决方案2】:

    例如,您可以将实体的主题标签存储在元素上

    <div class='tweet' data-hashtags='england ireland'>some_tweet</div>
    

    当有人点击你的按钮时像这样过滤:

    $('div.tweet').hide();
    $('div.tweet[data-hashtags~="ireland"]').show();
    

    这显然大大简化了,但一般的方法应该可以帮助您避免自己解析标签

    【讨论】:

    • 好的我明白你的意思,但我怎么知道 some_tweet 实际上包含“england ireland”?我使用 http 调试器检查了推文的结果,但我看不到任何将这些主题标签与实际推文文本分开的地方!
    • @neil 你用的是哪个api?
    • 我正在使用 JS api 仅从一个帐户返回推文,例如:api.twitter.com/1/statuses/…
    • @Neil 我认为您希望将 include_entities 参数设置为 true。 dev.twitter.com/docs/api/1/get/statuses/user_timeline
    • 我将此标记为正确,因为您将我指向 include_entities,这正是我所需要的!
    【解决方案3】:
    // match a #, followed by either "question" or "idea"
    var myregexp = /#(england|ireland|wales)\b/i;
    var match = myregexp.exec(subject);
    if (match != null) {
        result = match[1]; // will contain "england","ireland", or "wales"
    } else {
        result = "";
    }
    

    如果您不知道手头标签的名称 替换

     var myregexp = /#(england|ireland|wales)\b/i;
    

     var myregexp = /#(\w+)/; // Use this instead
    

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 2021-04-23
      • 2018-05-09
      • 2012-05-18
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多