1

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

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

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

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

4

2 回答 2

1

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

像这样的东西应该使用 PHP Simple HTML DOM Parser获得声誉

$html = file_get_html('https://stackoverflow.com/users/5039442/thetaskmaster');
$reputation = $html->find('.reputation', 0)->plaintext;
于 2015-08-01T11:57:36.827 回答
0

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

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

任何 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 查询的 vars 并$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"];
于 2015-08-25T17:13:23.997 回答