微博图片作者识别功能,找到发图的人

原理:

例如链接为 http://wx1.sinaimg.cn/mw690/9d0d09abgy1fj0wcs7aewj20ij0sn12y.jpg 的图

提取文件名 9d0d09abgy1fj0wcs7aewj20ij0sn12y,前 8 位 9d0d09ab 用 16 进制转换下变为 2634877355,就是用户 uid

如果是 http://wx1.sinaimg.cn/mw690/006r2HqOgy1fj7dxg3zuxj30p02a1wry.jpg 这种 005 006 开头的就用 62 进制转

为什么出现这个应该是发现 8 位 16 进制存不下了。。。。

php源代码

//微博图片地址
$pic = "https://wx1.sinaimg.cn/mw690/9e5389bbly1fyb2xgluy0j20go0m8q8x.jpg";
$pic = "http://wx1.sinaimg.cn/mw690/006r2HqOgy1fj7dxg3zuxj30p02a1wry.jpg";
$name = basename($pic);
//取得前8位
$name = substr($name,0,8);
//判断是不是005/006开头
if(preg_match('/^00[5|6]/',$name)){
    //62 进制转10
    $name = substr($name,2);   //去掉前面的0
    $uid = from62to10($name);
}else{
    //16 进制转10
    $uid = hexdec($name);
}

echo "微博:http://weibo.com/u/".$uid;



function from62to10($str){
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen($str);
    $dec = 0;
    for($i = 0;$i<$len;$i++){
        //找到对应字典的下标
        $pos = strpos($dict, $str[$i]);
        $dec += $pos*pow(62,$len-$i-1);
    }
    return $dec;
}

 

 

 

 

 

你可能感兴趣的:(网站使用,php学习笔记)