[英]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.