ホームページ >php教程 >php手册 >WeiboショートリンクアルゴリズムPHPバージョン

WeiboショートリンクアルゴリズムPHPバージョン

WBOY
WBOYオリジナル
2016-06-21 08:51:441405ブラウズ

アイデア:

1) 長い URL md5 から 32 ビットの署名文字列を生成し、4 つのセグメントに分割します。各セグメントは 8 バイトです。

2) ループ処理のこれら 4 つのセクションでは、8 バイトを 16 進文字列として扱い、0x3fffffff (30 ビット 1) で動作します。つまり、30 ビットを超える処理は無視されます。

3) これらの 30 桁は 6 つのセグメントに分割され、各 5 桁の数字が特定の文字を取得するために使用され、6 桁の文字列が順番に取得されます。

4) 合計 md5 文字列は 4 つの 6 桁の文字列を取得でき、それらのいずれかをこの長い URL の短い URL アドレスとして使用できます。

以下は PHP コードです:

function shorturl($url='', $prefix='', $suffix='') {

$base32 = 配列 (

'a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、

'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'、 'q'、'r'、's'、't'、'u'、'v'、'w'、'x'、
'y'、'z'、'0'、'1'、'2'、'3'、'4'、'5');

$hex = md5($prefix.$url.$suffix);
$hexLen = strlen($hex);
$subHexLen = $hexLen / 8;
$output = array();

for ($i = 0; $i $subHex = substr ($hex, $i * 8, 8);
$int = 0x3FFFFFFF & (1 * ('0x'.$subHex));
$out = '';
for ($j = 0; $j $val = 0x0000001F & $int;
$out .= $base32[$val];
$int = $int >>
}
$output[] = $out;
}
$output を返す;
}

$urls = shorturl('http://www.php100.com');
var_dump($urls);




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。