实战 回复知乎日报,返回8个最新知乎日报图文消息
使用接口
知乎日报接口
使用php的get请求知乎日报接口curl 类实现
class Curl
{
/**
* cur get
* @param [type] $url [description]
* @return [type] [description]
*/
public static function CurlGet($url){
$data = '';
$ch = curl_init();
$header = "Accept-Charset: utf-8";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$temp = curl_exec($ch);
return $temp;
}
}
知乎日报接口处理
require_once('Curl.php');
class Daily
{
public static function GetDail()
{
$url = "http://news-at.zhihu.com/api/4/news/latest";
$data = Curl::CurlGet($url);
$data = json_decode($data);
$data = self::ObjectArray($data);
// print_r($data);
return $data['stories'];
}
public static function ObjectArray($array)
{
if(is_object($array)){
$array = (array)$array;
}
if(is_array($array)){
foreach ($array as $key => $value) {
$array[$key] = self::ObjectArray($value);
}
}
return $array;
}
}
echo '
';
$data = Daily::GetDail();
print_r($data);
图文回复函数封装
function replyArticle($data){
global $xml;
$article = ''.count($data).'';
$article .= '';
foreach ($data as $value) {
$article .= sprintf('',$value['title']);
$article .= sprintf('',$value['desc']);
$article .= sprintf('',$value['picurl']);
$article .= sprintf('',$value['url']);
}
$article .= '';
$str = sprintf('
%d
%s',$xml->FromUserName,$xml->ToUserName,time(),$article);
file_put_contents('wx.log',$str."\n\n",FILE_APPEND);
echo $str;
}
判断回复内容
if ($xml->Content == '知乎日报') {
$res = Daily::GetDail();
$data = [];
foreach ($res as $key => $value) {
$data[] = [
'title' => $value['title'],
'url' => 'http://stark.wang',
'picurl' => $value['images'][0],
'desc' => $value['title']
];
}
replyArticle(array_slice($data,1,8));
}
文件结构
最后测试结果