搜索
首页后端开发php教程微信公众平台天气查询,火车票查询,快递查询,小黄鸡,翻译,公交查询的实现

大家可以去出处扫描二维码试试
  1. /**
  2. * wechat php test
  3. */
  4. include("ABClient.php"); //爱帮网申请 然后下载的sdk
  5. define("FANAPK", "API key"); //这个百度应用duapp.com创建一个应用获得的 API key
  6. define("WAPK","key"); //这个key地址http://lbsyun.baidu.com/apiconsole/key?application=key来获取
  7. //define your token
  8. define("TOKEN", "这里写你自己的token");
  9. $wechatObj = new wechatCallbackapiTest();
  10. $wechatObj->responseMsg();
  11. class wechatCallbackapiTest
  12. {
  13. private $model;
  14. private $name;
  15. public function __construct(){
  16. $this->model = new ABClient();
  17. $a = $this->model->test_transfer();
  18. $this->name = include("name.php");
  19. }
  20. public function valid()
  21. {
  22. $echoStr = $_GET["echostr"];
  23. //valid signature , option
  24. if($this->checkSignature()){
  25. echo $echoStr;
  26. exit;
  27. }
  28. }
  29. public function responseMsg()
  30. {
  31. //get post data, May be due to the different environments
  32. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  33. //extract post data
  34. if (!empty($postStr)){
  35. $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  36. $fromUsername = $postObj->FromUserName;
  37. $toUsername = $postObj->ToUserName;
  38. $type = $postObj->MsgType;
  39. $event = $postObj->Event;
  40. $c = $postObj->Location_X;
  41. $d = $postObj->Location_Y;
  42. $keyword = trim($postObj->Content);
  43. $time = time();
  44. $msgid = $postObj->MsgId;
  45. $textTpl = "
  46. %s
  47. 0
  48. ";
  49. if($type == "event" && $event == "subscribe")
  50. {
  51. $msgType = "text";
  52. $contentStr.= "欢迎关注微度网络,该公众平台有以下几种功能:\n\n";
  53. $contentStr.= "1.直接输入汉字或者中文进行中英文翻译,如“你好”\n";
  54. $contentStr.= "2.输入“天气+地区”进行天气查询,如“天气+石家庄”\n";
  55. $contentStr.= "3.输入“城市+起点+终点”进行公交查询,如“石家庄+火车站+宫家庄”\n";
  56. $contentStr.= "4.输入“@任何内容”跟小贱鸡聊天,如“@小贱鸡”\n";
  57. $contentStr.= "5.微信发送您的地理位置进行天气查询,您可以试一试\n";
  58. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  59. echo $resultStr;
  60. }else if($type == "text"){
  61. $keywords = explode("+",$keyword);
  62. $b = explode("@",$keyword);
  63. if(isset($b[1])){
  64. $contentStr = $this->simsim($b[1]);
  65. $msgType = "text";
  66. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  67. echo $resultStr;
  68. exit();
  69. }
  70. if($keywords[0]=="火车"){
  71. $city = $keywords[1];
  72. $end = $keywords[2];
  73. $time = $keywords[3];
  74. $result = $this->doget($city,$end,$time);
  75. if(!empty($result)){
  76. $result = strip_tags($result['datas']);
  77. $return_str = str_replace(" ","",$result);
  78. $return_str = str_replace("\\n","",$return_str);
  79. $a = explode(",",$return_str);
  80. $name =array();
  81. $c = array_chunk($a,16);
  82. array_pop($c);
  83. foreach($c as $k =>$v){
  84. $str="余票:\n商务座:".$v[5].",特等座:".$v[6].",一等座:".$v[7].",二等座:".$v[8].",高级软卧:".$v[9].",软卧:".$v[10].",硬卧:".$v[11].",软座:".$v[12].",硬座:".$v[13].",无座:".$v[14].",其他:".$v[15];
  85. $str = preg_replace("/硬座\:--,/","",$str);
  86. $str = preg_replace("/商务座\:--,/","",$str);
  87. $str = preg_replace("/特等座\:--,/","",$str);
  88. $str = preg_replace("/一等座\:--,/","",$str);
  89. $str = preg_replace("/二等座\:--,/","",$str);
  90. $str = preg_replace("/高级软卧\:--,/","",$str);
  91. $str = preg_replace("/软卧\:--,/","",$str);
  92. $str = preg_replace("/硬卧\:--,/","",$str);
  93. $str = preg_replace("/软座\:--,/","",$str);
  94. $str = preg_replace("/硬座\:--,/","",$str);
  95. $str = preg_replace("/其他\:--/","",$str);
  96. $contentStr.="车次:{$v[1]},发站:{$v[2]},到站:{$v[3]},历时:{$v[4]}。\n{$str}\n\n";
  97. if($k == 12){
  98. break;
  99. }
  100. }
  101. }else{
  102. $contentStr.="抱歉没有查到";
  103. }
  104. $msgType = "text";
  105. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  106. echo $resultStr;
  107. exit();
  108. }
  109. if(isset($keywords[1])&&!isset($keywords[2])){
  110. if($this->pexpress(trim($keywords[0]))){
  111. $a = $this->express(trim($keywords[0]),trim($keywords[1]));
  112. if($a["message"]=="ok"){
  113. if($a['ischeck']==1){
  114. $contentStr.="您的包裹已经签收\n\n";
  115. }else{
  116. $contentStr.="您的包裹还未签收\n\n";
  117. }
  118. $data = $a['data'];
  119. foreach($data as $k =>$v){
  120. $contentStr.="更新时间:{$v["time"]}\n物流状态:{$v["context"]}\n\n";
  121. }
  122. }else{
  123. $contentStr = "查询失败,请输入正确后查询";
  124. }
  125. $msgType = "text";
  126. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  127. echo $resultStr;
  128. }else{
  129. $weather = $this->weather($keywords[1]);
  130. if(!empty($weather))
  131. {
  132. $data = $this->json2array($weather);
  133. foreach($data as $k =>$v)
  134. {
  135. $str.=$v['date'].'。天气:'.$v['weather'].'。风速:'.$v['wind'].'。温度:'.$v['temperature']."\n\n";
  136. }
  137. }else{
  138. $str="请您输入正确的地址,输入方式如天气+北京";
  139. }
  140. $msgType = "text";
  141. $contentStr = $str;
  142. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  143. echo $resultStr;
  144. }
  145. }else if(isset($keywords[2])&&($keywords[0]!=="火车")){
  146. $city = $keywords[0];
  147. $start = $keywords[1];
  148. $end =$keywords[2];
  149. $a = $this->model->test_transfer($city,$start,$end);
  150. if(!empty($a)){
  151. foreach($a as $k=>$v){
  152. $contentStr.= "线路{$c}:".$v['dist']."米。估计耗费时间:{$v['time']}分钟。\n乘车线路:{$v['segments']["segment"][0]["line_name"]}。\n上车地点:{$v['segments']["segment"][0]["start_stat"]}。\n下车地点:{$v['segments']["segment"][0]["end_stat"]}。\n经过路线:{$v['segments']["segment"][0]["stats"]}\n\n";
  153. if($k == 4){
  154. break;
  155. }
  156. }
  157. }else{
  158. $contentStr="抱歉没有查询到";
  159. }
  160. $msgType = "text";
  161. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  162. echo $resultStr;
  163. }else{
  164. $fanyi = $this->fanyi($keyword);
  165. $msgType = "text";
  166. $contentStr = $fanyi;
  167. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  168. echo $resultStr;
  169. }
  170. }else if($type == 'location'){
  171. $result = $this->address($c,$d);
  172. if(isset($result['district'])){
  173. $weather = $this->weather($result['district']);
  174. if(!$weather){
  175. $weather = $this->weather($result['city']);
  176. }
  177. }else{
  178. $weather = $this->weather($result['city']);
  179. }
  180. $data = $this->json2array($weather);
  181. foreach($data as $k =>$v){
  182. $str.=$v['date'].'。天气:'.$v['weather'].'。风速:'.$v['wind'].'。温度:'.$v['temperature']."\n\n";
  183. }
  184. $msgType = "text";
  185. $contentStr = $str;
  186. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  187. echo $resultStr;
  188. }else{
  189. echo "您可以输入点什么";
  190. }
  191. }else {
  192. echo "";
  193. exit;
  194. }
  195. }
  196. //获取地理位置的
  197. private function address($addx,$addy)
  198. {
  199. $arr = array();
  200. $result = $this->map_text("http://api.map.baidu.com/geocoder/v2/?ak=".WAPK."&callback=renderReverse&location={$addx},{$addy}&output=xml&pois=0");
  201. $data = simplexml_load_string($result, 'SimpleXMLElement', LIBXML_NOCDATA);
  202. $result = $this->json2array($data);
  203. $arr = $result["result"]["addressComponent"];
  204. $address = $result['result']['formatted_address'];
  205. array_push($arr,$address);
  206. return $arr;
  207. }
  208. //解析json为数组
  209. private function json2array($json) {
  210. if ($json) {
  211. foreach ((array)$json as $k=>$v) {
  212. $data[$k] = !is_string($v) ? $this->json2array($v) : $v;
  213. }
  214. return $data;
  215. }
  216. }
  217. //获取天气信息
  218. private function weather($data)
  219. {
  220. //根据API调用输出数据
  221. $url="http://api.map.baidu.com/telematics/v2/weather?location={$data}&output=json&ak=".WAPK;
  222. $weather=$this->map_text($url);
  223. $data = json_decode($weather);
  224. return $data->results;
  225. }
  226. //调用翻译的api
  227. private function fanyi($data)
  228. {
  229. //根据API调用输出数据
  230. $url="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".FANAPK."&q={$data}&from=auto&to=auto";
  231. $fanyi=$this->map_text($url);
  232. $shuju=json_decode($fanyi);
  233. $result=$shuju->trans_result;
  234. return $result[0]->dst;
  235. }
  236. //解析地址的api
  237. private function map_text($url)
  238. {
  239. if(!function_exists('file_get_contents')) {
  240. $file_contents = file_get_contents($url);
  241. } else {
  242. $ch = curl_init();
  243. $timeout = 5;
  244. curl_setopt ($ch, CURLOPT_URL, $url);
  245. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  246. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  247. $file_contents = curl_exec($ch);
  248. curl_close($ch);
  249. }
  250. return $file_contents;
  251. }
  252. private function checkSignature()
  253. {
  254. $signature = $_GET["signature"];
  255. $timestamp = $_GET["timestamp"];
  256. $nonce = $_GET["nonce"];
  257. $token = TOKEN;
  258. $tmpArr = array($token, $timestamp, $nonce);
  259. sort($tmpArr);
  260. $tmpStr = implode( $tmpArr );
  261. $tmpStr = sha1( $tmpStr );
  262. if( $tmpStr == $signature ){
  263. return true;
  264. }else{
  265. return false;
  266. }
  267. }
  268. private function simsim($keywords){
  269. $curlPost=array("txt"=>$keywords);
  270. $ch = curl_init();//初始化curl
  271. curl_setopt($ch,CURLOPT_URL,'http://xiaohuangji.com/ajax.aspx');//抓取指定网页
  272. curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
  273. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  274. curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
  275. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  276. $data = curl_exec($ch);//运行curl
  277. curl_close($ch);
  278. return $data;
  279. }
  280. private function pexpress($exname){
  281. $a = $this->map_text("http://www.kuaidi100.com/");
  282. preg_match_all("/data\-code\=\"(?P\w+)\"\>\(?P.*)\/iU",$a,$b);<li> $name = array();</li> <li> foreach($b['title'] as $k=>$v){</li> <li> $name[$v] = $b['name'][$k];</li> <li> }</li> <li> if(!empty($name[$exname])){</li> <li> return true;</li> <li> }else{</li> <li> return false;</li> <li> }</li> <li> }</li> <li> private function express($keywords,$number){</li> <li> $a = $this->map_text("http://www.kuaidi100.com/");</li> <li> preg_match_all("/data\-code\=\"(?P<name>\w+)\"\>\<span>(?P<title>.*)\/iU",$a,$b);<li> $name = array();</li> <li> foreach($b['title'] as $k=>$v){</li> <li> $name[$v] = $b['name'][$k];</li> <li> }</li> <li> $this->name = $name;</li> <li> $keywords = $name[$keywords];</li> <li> $url = "http://www.kuaidi100.com/query?type={$keywords}&postid={$number}";</li> <li> $result = $this->map_text($url);</li> <li> $result = $this->json2array(json_decode($result));</li> <li> return $result;</li> <li> }</li> <li> </li> <li> private function doget ($start,$end,$time) // get获取数据使用</li> <li> {</li> <li> if(empty($time)){</li> <li> $time = date('Y-m-d',time());</li> <li> }else{</li> <li> if(substr($time,0,1)!=0){</li> <li> $time = date('Y-0',time()).$time;</li> <li> }else{</li> <li> $time = date('Y-',time()).$time;</li> <li> }</li> <li> }</li> <li> $star = $this->name[$start];</li> <li> $end = $this->name[$end];</li> <li> $url = "http://dynamic.12306.cn/otsquery/query/queryRemanentTicketAction.do?method=queryLeftTicket&orderRequest.train_date={$time}&orderRequest.from_station_telecode={$star}&orderRequest.to_station_telecode={$end}&orderRequest.train_no=&trainPassType=QB&trainClass=QB%23D%23Z%23T%23K%23QT%23&includeStudent=00&seatTypeAndNum=&orderRequest.start_time_str=00%3A00--24%3A00";</li> <li> $optionget = array('http' => array('method' => "GET", 'header' => "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.0.04506; CIBA)\r\nAccept:*/*\r\nReferer:http://dynamic.12306.cn/otsquery/query/queryRemanentTicketAction.do?method=init")); </li> <li> $file = file_get_contents($url, false , stream_context_create($optionget));</li> <li> return $this->json2array(json_decode($file));</li> <li> }</li> <li> </li> <li>}</li> <li> <li>?></li>
复制代码


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
基于JavaScript构建实时翻译工具基于JavaScript构建实时翻译工具Aug 09, 2023 pm 07:22 PM

基于JavaScript构建实时翻译工具引言随着全球化的需求日益增长,跨国交流和交流的频繁发生,实时翻译工具成为了一种非常重要的应用。我们可以利用JavaScript和一些现有的API来构建一个简单但实用的实时翻译工具。本文将会介绍如何基于JavaScript来实现这个功能,并附有代码示例。实施步骤步骤1:创建HTML结构首先,我们需要创建一个简单的HTML

iOS 17.2:如何使用 iPhone 的操作按钮翻译语音iOS 17.2:如何使用 iPhone 的操作按钮翻译语音Dec 15, 2023 pm 11:21 PM

在iOS17.2中,使用iPhone操作按钮的新自定义翻译选项克服沟通障碍。继续阅读以了解如何使用它。如果您的iPhone带有操作按钮,例如iPhone15Pro,Apple的iOS17.2软件更新为该按钮带来了新的翻译选项,可让您将实时对话翻译成多种语言。根据苹果公司的说法,翻译不仅准确,而且具有上下文感知能力,确保有效地捕捉细微差别和口语。该功能对于旅行者、学生和任何学习语言的人来说都应该是一个福音。在使用翻译功能之前,请务必选择要翻译的语言。您可以通过Apple内置的翻译应用程序执行此操作

如何解决搜狗浏览器无法翻译网页的问题如何解决搜狗浏览器无法翻译网页的问题Jan 29, 2024 pm 09:18 PM

搜狗浏览器无法翻译此网页怎么办?搜狗浏览器是一款非常好用的多功能浏览器,其中的网页翻译功能非常强大,能够帮助我们解决学习工作中的大多数麻烦。不过有些小伙伴却反应搜狗浏览器有着无法翻译此网页的问题,这可能是因为操作不当造成的,只需要正确的操作翻译功能就能解决,下面就由小编为大家带来搜狗浏览器无法翻译此网页解决方法。搜狗浏览器无法翻译此网页解决方法方法一:1、下载并安装搜狗浏览器2、打开搜狗浏览器3、任意打开一个英文网站4、网站打开后,单击右上角的译字图标5、选择翻译文字类型,然后单击翻译当前网页6

Java百度翻译API实现中文与芬兰语互相翻译的技术突破Java百度翻译API实现中文与芬兰语互相翻译的技术突破Aug 05, 2023 am 08:25 AM

Java百度翻译API实现中文与芬兰语互相翻译的技术突破导语:随着全球化进程的不断加速,人们对语言翻译的需求也越来越大。在软件开发领域,实现多语言翻译也变得非常重要。本文将介绍如何使用Java编程语言以及百度翻译API实现中文与芬兰语之间的互相翻译,我们将展示如何通过此技术突破实现人工智能在多语言翻译方面的应用。准备工作:在正式开始实现之前,我们需要进行一些

谷歌浏览器内置的翻译功能如何使用?谷歌浏览器内置的翻译功能如何使用?Jan 29, 2024 pm 05:57 PM

谷歌浏览器自带翻译在哪里?谷歌浏览器怎么自动翻译成中文?相信非常多的用户都知道谷歌浏览器是可以把整个网页自动翻译为中文的吧,这样给用户带来了便捷节省了时间,很多人第一次使用这个功能都不了解,不知道要怎么去设置,不要着急,下面本站小编就为大家带来谷歌浏览器自带翻译功能介绍,快来看看吧。谷歌浏览器怎么自动翻译成中文1、打开谷歌浏览器,点击右上角的三点图标。2、然后找到【设置】打开。3、将页面下拉到最下面,点击展开【高级】。4、点击展开【语言】。5、点击【询问是否翻译非您所用语言的网页】这个选项后面的

如何使用PHP开发微信小程序的翻译功能?如何使用PHP开发微信小程序的翻译功能?Oct 26, 2023 am 09:00 AM

如何使用PHP开发微信小程序的翻译功能?随着互联网的发展,语言的交流和沟通变得越来越重要。微信小程序是当前最热门的应用之一,而且拥有全球庞大的用户群体。为了使小程序能够更好地适应多语种用户需求,开发者可以为其添加翻译功能。本文将介绍使用PHP开发微信小程序翻译功能的具体步骤,并提供代码示例。注册微信小程序开发者账号首先,您需要在微信开放平台注册一个开发者账号

怎么用菜鸟裹裹查快递 用菜鸟裹裹查快递方法怎么用菜鸟裹裹查快递 用菜鸟裹裹查快递方法Mar 28, 2024 pm 02:26 PM

  你们知道在菜鸟裹裹上面是怎么来查快递的吗?菜鸟裹裹手机免费正版我相信对于这个操作方面,对于大家经常网购的朋友们来说都比较简单对不对,因为查询快递的方法是比较简单的,我们想要的货物订单,直接在平台上面输入查询就可以找得到,当然也可以使用手机号都没问题,今天小编就给你们来好好的讲解一番,希望你们不要错过了。  用菜鸟裹裹查快递方法:  1、在手机中打开菜鸟裹裹。  2、点击淘宝快速登录。  3、点击确认授权。  4、登录成功,点击查看快递即可。  以上就是这次小编所给你们带来的全部资讯,不要错过

python百度翻译API实现越南语翻译python百度翻译API实现越南语翻译Aug 08, 2023 pm 12:10 PM

Python百度翻译API实现越南语翻译引言:随着全球交流越来越紧密,语言翻译变得越来越重要。在计算机领域,有许多自动翻译工具可以帮助我们去理解和翻译不同的语言。百度翻译API是其中一种常用的自动翻译工具,它提供了丰富的语种支持。本文将介绍如何使用Python编程语言,结合百度翻译API实现越南语翻译。我们将通过获取百度翻译API的密钥,编写Python代码

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境