接着上次的写,PHP解析html文档,有很多方法,我用的是simp_html_dom,
<?php
/**
* wechat php test
*/
//define your token
header("Content-Type: text/html; charset=utf-8");
require_once "simple_html_dom.php";//导入simple_html_dom文件
define("TOKEN", "joke");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if(!empty( $keyword ))
{
$msgType = "text";
//$contentStr = "Welcome to wechat world!";
$test=new Test();
$contentStr=$test->Get_Joke($keyword);//调用自己写的函数,把用户的关键字传进去
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
/自己写的函数
class Test
{
public function Get_Joke($value)
{
$qurl="http://lengxiaohua.com/search?query_word=".$value;//
$html=file_get_html($qurl);//这是simple_dom_html.php,中提供的方法,返回的是html文件
$pre=$html->find("pre",rand(1,50));//解析html文件,rand(1,50)是生成1-50的随机数,$pre是获得的第rand(1,50)个标签,即时用户的关键字一样,保证每次获得笑话不一样
//$pre=$html->find("pre",51);
$pre_text=$pre->plaintext;//获得pre标签里的文字,就是我们要找的笑话
$html->clear();//解析html文件占内存,所以必须及时清理
if(empty($pre_text))
$pre_text="再试一次或者换个关键词,热门关键词有:喵星人 汪星人 老师 考试 微博 妹子 学校 照片 同学 大学 男友 世界 尼玛 女友 高中";
return $pre_text;
}
}
?>
附上我的二维码: