2016-12-15 35 views
-1

我有功能,其編碼編號,以像字符串:如何從信件中獲取反向號碼?

  • 0 - >一個
  • 1 - >乙
  • 2 - > C^
  • ...
  • 45 - >ř

功能:

public static function encode($number) { 
    $out = ""; 
    $codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 

    while ($number > 53) { 
     $key = $number % 54; 
     $number = floor($number/54) - 1; 
     $out = $codes{$key}.$out; 
    } 

    return $codes{$number}.$out; 
} 

如何製作將字母轉換回數字的反轉功能?

+0

你應該看看strpos函數給你一個字符串的位置: http://php.net/manual/en/function.strpos.php – Yoleth

+0

重新創建ASCII表嗎? – RomanPerekhrest

+0

根據你的代碼,如果給定的數字大於53,這意味着什麼? – Perumal

回答

0

它易於使用strpos功能

public static function decode($letter) { 

    $letter = $letter[0]; 

    $codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 

    $pos = strpos($codes,$letter); 

    return $pos; 

} 
+0

沒有人回答工作。例如,我想解碼Hk4n,Za,www ...它總是會返回53 – bars96

2

您可以將一個字符串像數組和使用的位置,因此這將是更容易編碼:

$codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 
return $codes[$number]; 

你可能想要一些錯誤檢查,如:

return isset($codes[$number]) ? $codes[$number] : false; 

然後進行解碼,找到這封信在該位置:

$codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 
return strpos($codes, $letter); 

strpos()將返回false你,如果沒有找到。

+0

沒有人回答工作。例如,我想解碼Hk4n,Za,www ...它總是會返回53 – bars96

+0

然後你需要用輸入和輸出來編輯你的問題。從你的問題來看,這並不明顯。 – AbraCadaver