【问题标题】:How to display stackexchange data on my site?如何在我的网站上显示 stackexchange 数据?
【发布时间】:2015-10-24 00:11:17
【问题描述】:

简介
我正在开发我的演示网站,我想包含我的 Stack Overflow 个人资料信息/帖子/数据(例如顶部标签、分数等)。子>

我找到 data.stackexchange.com 来检索所需的数据,但我不明白如何在我的网站中显示这些数据。
在 github.com 我发现了这个先决条件:https://github.com/StackExchange/StackExchange.DataExplorer#prerequisites 基本上说我必须是 .NET 程序员 才能显示这些数据,但我是 PHP 程序员 ,我与 Apache MySQLPHP 合作。

我知道有很多 PHP MsSQL functions 可以使用,但我如何使用哪个用户名-密码连接到 Stack Exchange 数据库(我认为是访客/受限用户)?

即使这不是太多的主题,我在哪里可以找到有关如何在我的网站上显示 Stack Overflow 数据的更多信息?

【问题讨论】:

  • 看看this wordpress 小部件
  • 感谢@beresfordt 的回复,但我不能/不想使用wordpress,有什么可以用纯PHP 的吗?
  • 您是否检查过@beresfordt 推荐的wordpress 小部件,wordpress 也在PHP 中,正如您在问题中提到的那样,您使用PHP,因此理解wordpress 小部件的工作原理并不难,而且很少稍加努力,您就可以使其独立插件与您的演示网站一起使用。
  • @Shehary 确实,正是我提到它的原因
  • @theTaskmaster - 我不知道你为什么如此反复地对我的答案投票,但你给我带来了一些版主问题,请阅读the rules,不要再这样做了,我只是想要给出我的答案,而不是被针对。谢谢

标签: php apache authentication dataexplorer


【解决方案1】:

我建议查看http://simplehtmldom.sourceforge.net/

使用 PHP 简单 HTML DOM 解析器应该获得 声誉

$html = file_get_html('https://stackoverflow.com/users/5039442/thetaskmaster');
$reputation = $html->find('.reputation', 0)->plaintext;

【讨论】:

    【解决方案2】:

    即使 CONFUS3D 的答案是一个很好的解决方案,对用户界面的任何更改都可能导致您的网站出现错误。

    我建议您使用Stack Exchange API set,您可以使用它检索您可能需要的大部分数据。

    任何 API 查询都会返回一个 JSON 对象。我使用这个 PHP 类来检索这个对象:

    class ApiReader {
        public function getResponse($url) {
            $cH = curl_init();
            curl_setopt($cH, CURLOPT_URL, $url);
            curl_setopt($cH, CURLOPT_HEADER, 0);
            curl_setopt($cH, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($cH, CURLOPT_TIMEOUT, 30);
            curl_setopt($cH, CURLOPT_USERAGENT, cURL);
            curl_setopt($cH, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($cH, CURLOPT_ENCODING, "gzip");
    
            $result = curl_exec($cH);
    
            if(curl_errno($cH)) {
                $retur = FALSE;
                }
            else {
                $status = curl_getinfo($cH, CURLINFO_HTTP_CODE);
                if($status == 200) {
                    $retur = $result;
                    }
                 else {
                     $retur = FALSE;
                     }
                 }
             curl_close($cH);
             return $retur;
             }
         }
    

    即使我处于离线状态,我也会使用这个小技巧来测试网站。

    在您的主机中,保存您需要使用的所有 JSON 对象,然后声明两个变量 $UInfo_API 包含 API 查询和 $UInfo_Syn 获取保存的 JSON 对象的内容

    $UInfo_API = "api.stackexchange.com/2.2/users/5039442?site=stackoverflow";
    $UInfo_Syn = file_get_contents("yourjsonobject.json");
    

    然后将结果保存在变量中,检查getResponse() 方法是否失败。之后,您就有了可用的数据。

    $sear = new ApiReader();
    $uInfo = $sear->getResponse($UInfo_API);
    $uInfo = ($uInfo !== FALSE)? json_decode($uInfo, TRUE): json_decode($UInfo_Syn, TRUE);
    $rep = $uInfo["items"][0]["reputation"];
    

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2010-10-14
      • 2020-08-20
      • 2012-05-23
      相关资源
      最近更新 更多