Можно ли преобразовать путь utf-8 в URL в короткий и фиксированный уникальный идентификатор в php?
Я хочу каждый раз, один и тот же результат.
например это:
questions/صصثبصث/ask?q=asd$a=سیبث
быть примерно таким: 34Sdd6N
CRC32 является наиболее подходящим вариантом, когда мы говорим о производительности. Если вы используете MySQL / MariaDB в качестве СУБД, вы можете создать INT
колонка с UNSIGNED
флаг и он будет хранить результат CRC32 полностью в 4 байта только для каждого URL.
PHP имеет crc32
функция, которая принимает строки и имеет очень хорошую дисперсию хэшей, поэтому вам не нужно заботиться о дубликатах.
Вы также можете добавить dechex
Обертка вокруг результата CRC32, если вы хотите добавить буквы ABCDEF в хеш без влияния на производительность базы данных (и для уверенного использования hexdec
преобразовать его обратно).
сохранить URL в таблице базы данных и добавить столбец «код» или другое имя, как это в таблице. Вы можете добавить случайную строку для каждого URL-адреса вставки и получить URL с этим кодом. Будьте осторожны, не используйте повторяющийся код.
То, что вы пытаетесь спросить, в основном хеширования. Есть некоторые функции для хеширования в php. Доступна одна из таких функций Вот. Я надеюсь, что вы найдете это полезным.