【问题标题】:php make unique hash of rss descriptionphp 生成 RSS 描述的唯一哈希
【发布时间】:2010-08-16 03:50:48
【问题描述】:

我使用 php 创建了一个排序 rss 聚合器,它将来自多个站点 rss 提要的数据存储到 mysql 数据库中。由于文章可以在许多网站上重复,我想避免这种情况。我被告知您可以使用散列来根据 rss [描述 + 标题] 的内容制作唯一的散列。现在哪种散列算法最快,产生的字符更少,我可以用来比较以避免重复。

提前感谢

【问题讨论】:

  • 有很多可用的。但是散列函数生成的字符数越少,标识符冲突的可能性就越大。首先要确定这一点。

标签: php hash rss duplicates


【解决方案1】:

sprintf('%u',crc32()) 产生 4,294,967,296 种组合,比 md5 或 sha1 短。它只有 32 位宽。

【讨论】:

  • 当然,您应该将字符串作为crc32 的参数传递。
  • 这是 OP 的选项。如果他想要一个十六进制字符串,他可以使用 dechex(sprintf('%u',crc32()) ,或者对于纯十进制数字只使用简单的左零填充。
  • @DanielL... 输出的是整数还是字符串?
  • 请记住,正如@stillstanding 所写,“哈希函数生成的字符数越少,标识符冲突的可能性就越大。一定要确定这一点。”。 MD5 是 128 位的,因此提供了更多的标识符和更少的冲突机会。
  • similar_text 怎么样。这值得吗
【解决方案2】:

为避免错误重复,您应该使用加密安全的散列算法,例如 SHA-1 或 MD5。

【讨论】:

    【解决方案3】:

    MD5 速度最快,生成的散列长度为 32 个字符。

    <?php
    $hash = md5($description . $title);
    ?>
    

    我在我的 RSS 解析器中将它用于完全相同的目的。它就像一个魅力。

    【讨论】:

    • 感谢你所有的答案,但我想我会用 shammittomars 的答案作为它的 32 个字符长,使用 md5,他理解我的问题。并且遇到过类似的问题
    猜你喜欢
    • 2013-07-29
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多