Можно ли сгенерировать псевдослучайное число на основе строки, что означает, что конкретная строка ВСЕГДА будет возвращать одно и то же число?
То, что вам нужно, это не случайный, но хэширования функция.
Алгоритм хеширования создает отпечаток входных данных. Хеш обычно необратим, то есть вы не можете восстановить данные из хеша. (Однако, если алгоритм имеет недостатки, вы можете сгенерировать столкновения, но пока вы ничего не делаете с безопасностью, вам не о чем беспокоиться.)
К сожалению, в JS нет встроенных алгоритмов хеширования, поэтому вы должны реализовать свои собственные. Однако вот SO пост, который показывает реализацию: https://stackoverflow.com/a/7616484/3908235
И, видимо, есть вся библиотека с реализацией общих алгоритмов (спасибо @MattGibson).
Если вы хотите сделать это в PHP, то вы можете использовать crc32. Это не случайный но он производит числа, которые будут варьироваться в зависимости от содержимого строки. Не гарантируется на 100%, что две разные строки будут давать разные числа.
Пример:
$number = crc32("http://php.net/manual/en/function.crc32.php");
Обратите внимание, что $number
будет 32-разрядным целым числом без знака, но PHP интерпретирует все целые числа как целые числа со знаком, значение может быть по-разному представлено в 32-разрядных средах, которые могут возвращать отрицательные и положительные числа, и 64-разрядных средах, которые будут возвращать только положительные числа.
Хорошая идея отформатировать вывод, используя Printf чтобы вывести это на ваш HTML,
printf("%u", $number);
Для сравнения значений, созданных в разных архитектурах, вы также должны отформатировать строку, используя Sprintf, просто чтобы быть в безопасности:
$numberToStoreShareOrCompare = sprintf("%u", $number);