Можно ли конвертировать полный URL-адрес utf-8 в уникальный идентификатор?

Можно ли преобразовать путь utf-8 в URL в короткий и фиксированный уникальный идентификатор в php?

Я хочу каждый раз, один и тот же результат.

например это:

questions/صصثبصث/ask?q=asd$a=سیبث

быть примерно таким: 34Sdd6N

0

Решение

CRC32 является наиболее подходящим вариантом, когда мы говорим о производительности. Если вы используете MySQL / MariaDB в качестве СУБД, вы можете создать INT колонка с UNSIGNED флаг и он будет хранить результат CRC32 полностью в 4 байта только для каждого URL.

PHP имеет crc32 функция, которая принимает строки и имеет очень хорошую дисперсию хэшей, поэтому вам не нужно заботиться о дубликатах.

Вы также можете добавить dechex Обертка вокруг результата CRC32, если вы хотите добавить буквы ABCDEF в хеш без влияния на производительность базы данных (и для уверенного использования hexdec преобразовать его обратно).

1

Другие решения

сохранить URL в таблице базы данных и добавить столбец «код» или другое имя, как это в таблице. Вы можете добавить случайную строку для каждого URL-адреса вставки и получить URL с этим кодом. Будьте осторожны, не используйте повторяющийся код.

0

То, что вы пытаетесь спросить, в основном хеширования. Есть некоторые функции для хеширования в php. Доступна одна из таких функций Вот. Я надеюсь, что вы найдете это полезным.

0
По вопросам рекламы [email protected]