>백엔드 개발 >PHP 튜토리얼 >웨이보 단축 링크 알고리즘 PHP 버전 웨이보 링크 주소 웨이보 링크 보내기 웨이보 링크 보내기

웨이보 단축 링크 알고리즘 PHP 버전 웨이보 링크 주소 웨이보 링크 보내기 웨이보 링크 보내기

WBOY
WBOY원래의
2016-07-29 08:53:401317검색

아이디어:
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 코드입니다:

웨이보 단축 링크 알고리즘 PHP 버전 웨이보 링크 주소 웨이보 링크 보내기 웨이보 링크 보내기

결과:
<span>function</span> shorturl(<span>$url</span>='', <span>$prefix</span>='', <span>$suffix</span>=''<span>) {
    </span><span>$base32</span> = <span>array</span><span> (
       </span>'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'<span>);
 
    </span><span>$hex</span> = <span>md5</span>(<span>$prefix</span>.<span>$url</span>.<span>$suffix</span><span>);
    </span><span>$hexLen</span> = <span>strlen</span>(<span>$hex</span><span>);
    </span><span>$subHexLen</span> = <span>$hexLen</span> / 8<span>;
    </span><span>$output</span> = <span>array</span><span>();
 
    </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> $subHexLen; <span>$i</span>++<span>) {
        </span><span>$subHex</span> = <span>substr</span> (<span>$hex</span>, <span>$i</span> * 8, 8<span>);
        </span><span>$int</span> = 0x3FFFFFFF & (1 * ('0x'.<span>$subHex</span><span>));
        </span><span>$out</span> = ''<span>;
        </span><span>for</span> (<span>$j</span> = 0; <span>$j</span> $j++<span>) {
            </span><span>$val</span> = 0x0000001F & <span>$int</span><span>;
            </span><span>$out</span> .= <span>$base32</span>[<span>$val</span><span>];
            </span><span>$int</span> = <span>$int</span> >> 5<span>;
        }
        </span><span>$output</span>[] = <span>$out</span><span>;
    }
    </span><span>return</span><span>$output</span><span>;
}
 
</span><span>$urls</span> = shorturl('http://www.dareng.com'<span>);
</span><span>var_dump</span>(<span>$urls</span>);

웨이보 단축 링크 알고리즘 PHP 버전 웨이보 링크 주소 웨이보 링크 보내기 웨이보 링크 보내기

웨이보 단축 링크 알고리즘 PHP 버전 웨이보 링크 주소 웨이보 링크 보내기 웨이보 링크 보내기

<span>array</span>(4<span>) {
  [</span>0]=>
  <span>string</span>(6) "alms1l"<span>  [</span>1]=>
  <span>string</span>(6) "2ipmby"<span>  [</span>2]=>
  <span>string</span>(6) "avo1hu"<span>  [</span>3]=>
  <span>string</span>(6) "fdlban"<span>}</span>

웨이보 단축 링크 알고리즘 PHP 버전 웨이보 링크 주소 웨이보 링크 보내기 웨이보 링크 보내기 위 내용은 Weibo 짧은 링크의 내용을 포함하여 PHP 버전의 Weibo 짧은 링크 알고리즘을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.