熟悉我的人都知道我之前用的是嘀咕,但是自从嘀咕转型后就没怎么去用过了。现在以邪恶的企鹅微博为主,但是一直以来腾讯微博的调用是个麻烦事,它的微博秀使用iframe标签来嵌入的,让人很蛋疼,不能去修改它的显示样式,完全不能和博客同风格。前段时间开放平台中放出了RSS和JSONP的地址,这样的话就能够订阅到最新的消息了。

开始告诉你们怎么折腾吧,首先你要有两个QQ,第一个是你当前用的,第二个随便什么都可以。然后用你第二个QQ去开通微博,收听你但前用的微博,注意,只能收听你自己一个,那些什么推荐收听的V都跳过。最后你再进入这里,获得JSONP的地址。下面给出关键的代码部分。

function get_qq_mirco_blog_info($format = '<a href="{permalink}">{content}</a>',$num = 20)
{
    $qqRSS = '这里填写JSONP地址'; //注意:是第二个QQ的JSONP地址
    $contents = file_get_contents($qqRSS);
    $str1 = strpos($contents,'[');
    $str2 = strpos($contents,'],"fans":');
    $json = substr($contents,$str1, $str2 - 17);//这个地方不知道是否通用
    $json = stripslashes($json);
    $json = json_decode($json, true);
    for ($i=0;$i&lt;$num;$i++){
        $content = $json[$i]['content'];    //内容
        $time = date("n月d日 H:i",$json[$i]['timestamp']); //时间
        $permalink = "http://t.qq.com/p/t/".$json[$i]['id']; //链接
        $form = $json[$i]['fromarea'];  //来源
        $type = get_qq_mirco_blog_type_info($json[$i]['type']); //类型
        $count = $json[$i]['count'];    //转载次数
        echo str_replace(array('{content}','{time}','{permalink}','{form}','{type}','{count}'),array($content,$time,$permalink,$form,$type,$count),$format);
    }
}
function get_qq_mirco_blog_type_info($type)
{
    $result = "";
    switch ($type) {
    case 2:
      $result = "转播: ";
      break;
    case 3:
      $result = "私信: ";
      break;
    case 4:
      $result = "回复: ";
      break;
    default:
    }
    return $result;
}

把这段代码放入function.php文件中,然后在模板中调用代码get_qq_mirco_blog_info();

该函数有两个参数,第一个是定义的格式,格式的参数请看for循环里面的注意;第二个是调用的条数,最多20条。

具体的调用代码就是这样了,我没有单独的测试,反正在自己的博客中是没有问题的,效率上我也不能保证什么,但是至少是比民间的API快吧,还有什么问题请留言吧。另外再给出一个获得RSS版的代码。

$qqRSS = 'RSS地址';
$XML =new DomDocument;
$XML->load($qqRSS);
$Items = $XML->getElementsByTagName("item");
echo "<ul>
  ";
  foreach ($Items as $Item)
  {
      $title = $Item->getElementsByTagName("title")->item(0)->nodeValue;  //内容
      $link = $Item->getElementsByTagName("link")->item(0)->nodeValue;  //链接
      $time = $Item->getElementsByTagName("pubDate")->item(0)->nodeValue;  //发布时间
      $times = time_tran(date("Y-m-d H:i:s",strtotime($time)));  //发布时间
      echo '<li>
    <div class="top">
      '.$title.'
    </div>
    
    <div class="bottom">
      <a target="_blank" href="'.$link.'">'.$times.'</a>
    </div>
  </li>';
  }
  echo "
</ul>";

我的腾讯微博,欢迎收听我的微博:@冰剑