簡體   English   中英

從字符串生成10位數字

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

  1. 對於小於10個字符的較小字符串,還應生成10個隨機數
  2. 我有大量的字符串數據庫,因此數字不應該依賴於第一個或最后一個10個字符。它應該是所有單詞的混合,並且應盡可能唯一。

謝謝大家

這是不可能的,因為英文字母由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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM