如何在帖子表中显示流行的#标签?

时间:2014-09-01 10:25:29

标签: php mysql

如何在帖子表中显示热门标签(#)?

我有1个表格帖子= tb_post

post_id | post           | uid
1       | blabla #one    | 01
2       | wew #two       | 01
3       | nice #one      | 02
4       | great #one     | 02
5       | excellent #one | 01

-

  1. 我如何计算该主题标签?
  2. 在该示例中,我们知道#one将是最顶层的标签。如何显示顶部#hashtag< - Just hashtag不包含其他文本。例如:

    TOP HASHTAG : #one
    
  3. 到目前为止我的查询:

    SELECT DISTINCT post
    FROM tb_post
    WHERE post LIKE '%#%'
    GROUP BY post
    

1 个答案:

答案 0 :(得分:3)

  

我不小心点击了帖子。 downvotes可以等到我结束吗?

在PHP中,获取数组中post的所有值,因此您将拥有:

Array (
    blabla #one
    wew #two
    nice #one
    great #one
    excellent #one
)

现在,使用implode(" ", $posts)加入所有数组项,它会为您提供一个字符串:

blabla #one wew #two nice #one great #one excellent #one

使用explode(" ", $posts)拆分。现在,检查以#开头的值。将它们添加为数组索引并增加计数!现在,您有了增加计数的代码!你现在可以这样做:

<?php
$posts = explode(" ", "blabla #one wew #two nice #one great #one excellent #one");
$rank = array();
foreach ($posts as $post)
  if (strpos("#", $post))
    if (!isset($rank[$post]))
      $rank[$post] = 1;
    else
      $rank[$post]++;
?>

甚至可以通过这种方式使用函数array_count_values($hashes)

<?php
$posts = explode(" ", "blabla #one wew #two nice #one great #one excellent #one");
$hashes = array();
foreach ($posts as $post)
  if (strpos("#", $post))
    $hashes[] = $post;
?>

现在使用array_sort()或其他东西按降序对数组进行排序,并将其用于排名!

  

Downvoters,你可以检查并还原那些吗?