PHP で次のことを最適に行う方法がわかりません: データベースに、19041985 のような一意の ID を持つメッセージがあります。これらのメッセージを短い URL サービスで参照したいのですが、生成されたハッシュは使用しません。ただし、元の ID を単に「計算」するだけです。
つまり、例: http://short.url/sYsn7 では、訪問者が要求したいメッセージ ID を計算できます。
より明確にするために、これらの「英数字 ID バージョン」を生成するために PHP で次のように記述しました。もちろん、逆の方法で元のメッセージ ID を計算できます。
問題は、これが最適な方法かどうかです。私はそうは思いませんが、それ以外は考えられません。
$alphanumString = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_';
for($i=0;$i < strlen($alphanumString);$i++)
{
$alphanumArray[$i] = substr($alphanumString,$i,1);
}
$id = 19041985;
$out = '';
for($i=0;$i < strlen($id);$i++) {
if(isset($alphanumString["".substr($id,$i,2).""]) && strlen($alphanumString["".substr($id,$i,2).""]) > 0) {
$out.=$alphanumString["".substr($id,$i,2).""];
} else {
$out.=$alphanumString["".substr($id,$i,1).""];
$out.=$alphanumString["".substr($id,($i+1),1).""];
}
$i++;
}
print $out;