嗨,我有如下所示的绳子
$string = "hello this is big test string"或
$string = "hello small";我需要从上面的strings.It生成唯一的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) . " ";
}P.s
谢谢大家。
发布于 2014-11-21 07:42:09
这是不可能的,因为英文字母表由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位以内。
发布于 2014-11-21 07:36:13
在字符串的md5上创建一个substr函数:
substr(hexdec(md5($string)), 0, 10)发布于 2014-11-21 08:04:50
这就行了
$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);https://stackoverflow.com/questions/27056223
复制相似问题