2010-08-15 2 views
2

im using php для создания сортировщика rss, который хранит данные из нескольких rss-каналов сайта в базу данных mysql. поскольку статьи могут быть дублированы на многих веб-сайтах, я хочу избежать этого. ive было сказано, что вы можете использовать хеширование для создания уникальных хешей на основе содержимого rss [description + title]. Теперь, какой алгоритм хэширования является самым быстрым и создает меньше символов, которые я могу использовать для сравнения, чтобы избежать дублирования.php make unique hash of rss описание

Thanx заранее

+2

Есть много доступных. Но чем меньше символов генерируется хеш-функцией, тем вероятнее, что у вас будут коллизии в ваших идентификаторах. Будьте уверены в этом. – stillstanding

ответ

2

sprintf ('% u', crc32()) производит 4 294 967 296 комбинаций и короче md5 или sha1. это всего лишь 32 бита.

+1

Вы должны передать строку как аргумент 'crc32', конечно. – Daniel

+2

это опция OP. он может использовать dechex (sprintf ('% u', crc32()), если ему нужна шестнадцатеричная строка или просто простая левая-нулевая прокладка для чистых десятичных цифр. – stillstanding

+0

hmm ..... 32bits wide. thanx для этого Решение –

1

Чтобы избежать ложных дубликатов следует использовать криптографически безопасный алгоритм хеширования как SHA-1 или MD5.

1

MD5 самый быстрый и производит хеш длиной 32 символа.

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

Я использовал его в своем блоке RSS для точно такой же цели. И это работает как шарм.

+0

thanx для всех ваших ответов, но я думаю, что я отвечу на shammittomars, поскольку его 32 символа длинны, использует md5, и он понял мой вопрос. и пошел по аналогичной проблеме –