[英]Generate 10 digit number from a string
嗨,我有如下字符串
$string = "hello this is big test string"
要么
$string = "hello small";
我需要从上面的字符串中生成唯一的10数字。它不必是可逆的,但始终应生成相同的唯一10数字。
我试过的
function toNumber($dest)
{
if ($dest)
return ord(strtolower($dest)) - 96;
else
return 0;
}
$str = "hello this is string";
$chars = str_split($str);
foreach($chars as $char){
echo toNumber($char) . " ";
}
PS
谢谢大家
这是不可能的,因为英文字母由26个字母组成,而数字仅包含10个“字母”。
加上您的字符串也可能超过10个字符。
因此,无法为长度在1到n之间的字符串创建只有10位数字的唯一数字。
例如,假设您的字符串与示例中的字符串一样长为10个字符:
$string = "hello small";
然后您采用一种简单的翻译方法:
a = 0, b = 1, c = 2, d = 3, e = 4, f = 5, g = 6, h = 7, i = 8, j = 9,
k = 0, l = 1, m = 2, n = 3, o = 4, p = 5, q = 6, r = 7, s = 8, t = 9,
u = 0, v = 1, w = 2, x = 3, y = 4, z = 5, [space] = 6
那么字符串翻译将是:
74114682011
如果您有另一个字符串,可能是某些名称...
$string = "robby imull";
..它将转换为完全相同的数字代码。
(我知道这是一个奇怪的名字,但我只是做了一些简单的例子)
我希望您能将代码限制为10位数字,这有什么问题。
在字符串的md5上创建一个substr函数:
substr(hexdec(md5($string)), 0, 10)
这会做
$input = "hello worlds";
$encrypted = encryptIt( $input );
function encryptIt( $q ) {
$cryptKey = 'qJB0rGtIn5UB1xG03efyCp';
$qEncoded = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
return( $qEncoded );
}
echo substr($encrypted, -20, 10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.