ctoicqtao 发表于 2012-12-11 11:41:56

关于微博的小功能类 id=》mid

本帖最后由 ctoicqtao 于 2012-12-11 11:43 编辑

目前新浪微博在调用的时候会有一个问题,就是在statuses/user_timeline中调用微博内容的时候,如果需要做一个连接,则只能获取到 id / mid /idstr
不知道是新浪微博自己搞错了,还是怎么样,这三个值是一样的,而目前需要的连接地质是这样子的: weibo.com/123123/z99FCzCNl
所以找了下网上的资料,根据别人写的方法,写了个类,(唉,新手,写helper老是无效,希望牛人帮忙写一个,我也知道用helper更好一些)。现在把这个类传上来,供大家参考一下。

原文地址如下:进入原文

我解释的不清楚的地方,请大家参考原文。


<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
* Description of Base62
* for sina weibo weiboID to MID
* http://weibo.com/uid/z99FCzCNl
* 3521821288490611 => z99FCzCNl
* @author TomChen
*/

class Base62 {

    private $str62keys = array(
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
      "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","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"
);

    public function int10to62($int10)
    {
      $str62keys = $this->str62keys;
      $s62 = '';
      $r = 0;
      while ($int10 != 0)
      {
                $r = $int10 % 62;
                $s62 = $str62keys[$r].$s62;
                $int10 = floor($int10 / 62);
      }
      return $s62;
    }

    public function getmid($mid)
    {
      $url = '';
      for ($i = strlen($mid) - 7; $i > -7; $i -=7)
      //从最后往前以7字节为一组读取mid
      {
            $offset1 = $i < 0 ? 0 : $i;
            $offset2 = $i + 7;
            $num = substr($mid, $offset1,$offset2-$offset1);
            //mid.substring(offset1, offset2);

            $num = self::int10to62($num);
            $url = $num .$url;
      }

      return $url;
    }
}

?>

冰枫 发表于 2013-2-7 23:50:24

新浪官方提供了接口,直接调用,其实也挺方便的;P

ctoicqtao 发表于 2013-2-8 20:16:57

需要再多调用一个接口 ,,
页: [1]
查看完整版本: 关于微博的小功能类 id=》mid