PHP - 将字符转换为数字

时间:2014-04-04 06:38:50

标签: php string math random

假设我有一个这样的字符串:

whateverthisis123 #_-

我想将此字符串转换为数字间隔内的数字,例如在1-1000之内。

上述字符串可以转换为

387

这有一些规则:

  • 字符串可以包含每个字符。
  • 这个数字应该随机但不可能。相同的字符串应始终返回相同的数字。
  • 较长的字符串不应该使数字更高。应该感觉随意。
  • aaa不应该给出222这样的数字。应该感觉随机。
  • 它应该接受示例1的间隔,最多1000个。
  • “thisstring”和“thisstring1”是相似的。这些数字仍然不一样。

PHP中是否有内置函数?如果没有,任何聪明的想法如何创建这样的东西?

如果首次转换为MD5,可能会更容易? http://www.php.net/manual/en/function.md5.php

2 个答案:

答案 0 :(得分:2)

您实际上是在描述哈希函数。 MD5看起来像是要走的路。如果您需要将其转换为数字intval()。要将其保持在1-1000之间,请使用$number % 1000

注意:如果这与安全/密码有关,那就不错了。

答案 1 :(得分:1)

从我的评论中扩展而来,这是一个完整的代码示例(比哈希更有趣的方式..)

 <?php
  int 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 $out;
      }
 ?>

很抱歉,如果这是程序错误,我习惯了c#,我还没有测试过。所以,如果有任何错误,我希望有人编辑它