假设我有一个这样的字符串:
whateverthisis123 #_-
我想将此字符串转换为数字间隔内的数字,例如在 1-1000 内。
例如,上面的字符串可以转换为
387
这带有一些规则:
- 字符串可以包含每个字符。
- 这个数字应该感觉是随机的,但不可能是随机的。相同的字符串应始终返回相同的数字。
- 较长的字符串不应使数字更高。应该感觉随机。
- AAA 不应该给出像 222 这样的数字。应该感觉随机。
- 它应该接受例如 1 到 1000 的间隔。 "
- thisstring"和"thisstring1"是相似的。数字应该仍然不一样。
PHP 中是否有内置函数?如果没有,有什么聪明的想法如何创建这样的东西吗?
如果先转换为MD5,也许会更容易? http://www.php.net/manual/en/function.md5.php
你本质上是在描述一个哈希函数。MD5看起来像是要走的路。如果您需要将其转换为数字,则可以intval()
它。要将其保持在 1-1000 之间,请使用 $number % 1000
。
注意:如果这与安全性/密码有关,则是一个坏主意。
从我的评论中扩展,这是一个完整的代码示例(比哈希更有趣的方式......
<?php
function numberout(string $input)
{
$hash=md5($input);
$calculate=hexdec(substr($hash,0,3)); //take out 3 digits
$maxhex=4095; //3 digit hex ,65535 for 4 digit hex and so on...
$out = ($calculate*1000)/$maxhex;
return round($out);
}
?>
抱歉,如果这在编程上是错误的,我已经习惯了 c#,但我还没有测试过这个。所以如果有任何错误,我希望有人编辑它