찾다
백엔드 개발PHP 튜토리얼WeChat 공개 플랫폼 날씨 쿼리, 기차표 쿼리, 특급 배송 쿼리, 작은 노란 닭, 번역, 버스 쿼리 구현

소스에서 QR 코드를 스캔하여 사용해 볼 수 있습니다.
  1. /**
  2. * 위챗 PHP 테스트
  3. */
  4. include("ABClient.php") //Aibang.com 애플리케이션을 다운로드한 후 SDK를 다운로드합니다
  5. define("FANAPK", "API key"); //이 Baidu 애플리케이션 duapp.com은 API 키를 얻기 위한 애플리케이션을 생성합니다
  6. define("WAPK", "key") //이 키 주소 http : //lbsyun.baidu.com/apiconsole/key?application=key를 얻으려면
  7. //토큰 정의
  8. define("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("이름 .php");
  19. }
  20. 공개 함수 valid()
  21. {
  22. $echoStr = $_GET["echostr"];
  23. //유효한 서명, 옵션
  24. if($this->checkSignature()){
  25. echo $echoStr;
  26. exit;
  27. }
  28. }
  29. 공개 함수 responseMsg()
  30. {
  31. //포스트 데이터 가져오기, 환경이 다르기 때문일 수 있음
  32. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  33. //포스트 데이터 추출
  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 = 트림($postObj->Content);
  43. $time = time();
  44. $msgid = $postObj->MsgId;
  45. $textTpl = "< ;xml>
  46. > ;
  47. %s
  48. 0
  49. ";
  50. if($type == "event" && $event = = "구독")
  51. {
  52. $msgType = "text";
  53. $contentStr.= "Weidu Network를 팔로우하신 것을 환영합니다. 이 공개 플랫폼에는 다음 기능이 있습니다: nn";
  54. $contentStr . = "1. "안녕하세요"와 같이 한자 또는 한영 번역을 위해 한자를 직접 입력합니다. n";
  55. $contentStr.= "2. "날씨 스자좡"과 같이 날씨 쿼리에 "날씨 지역"을 입력합니다. n";
  56. $contentStr.= "3. "스자좡 기차역 공자좡"과 같이 대중교통 쿼리에 "도시 출발지 및 도착지"를 입력합니다.
  57. $contentStr.= "4. "를 입력합니다. @anycontent" 다음에 작은 Jianji 채팅이 이어집니다(예: "@小小鸡"n";
  58. $contentStr.= "5. WeChat은 날씨 쿼리를 위해 지리적 위치를 보냅니다. 시도해 볼 수 있습니다.";
  59. $ resultStr = sprintf( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  60. echo $resultStr;
  61. }else if($type == "text"){
  62. $keywords = 폭발(" ",$keyword);
  63. $b = 폭발("@",$keyword);
  64. if(isset($b[1])){
  65. $contentStr = $this- >simsim($b[1]);
  66. $msgType = "text";
  67. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );
  68. echo $resultStr;
  69. 종료();
  70. }
  71. if($keywords[0]=="기차"){
  72. $city = $keywords[1];
  73. $end = $keywords[2];
  74. $time = $keywords[ 3];
  75. $result = $this->doget($city,$end,$time);
  76. if(!empty($result)){
  77. $result = Strip_tags($result[ 'datas']);
  78. $return_str = str_replace(" ","",$result);
  79. $return_str = str_replace("\n","",$return_str);
  80. $ a = 폭발(",",$return_str);
  81. $name =array();
  82. $c = array_chunk($a,16);
  83. array_pop($c);
  84. foreach( $c as $k =>$v){
  85. $str="남은 항공권: n 비즈니스석 좌석: ".$v[5].", 특별석 좌석: ".$v[6]." , 1등석 좌석: ".$v[7].", 2등석 좌석: ".$v[8].", 프리미엄 푹신한 침대: ".$v[9].", 푹신한 침대: " .$v[10]. ", 딱딱한 침대: ".$v[11].", 부드러운 좌석: ".$v[12].", 딱딱한 좌석: ".$v[13].", 좌석 없음 : ".$v[14]. ", 기타:".$v[15];
  86. $str = preg_replace("/하드 시트:--,/","",$str);
  87. $str = preg_replace("/비즈니스 좌석:--,/","",$str) --,/","",$str);
  88. $str = preg_replace("/공주 좌석:- -,/","",$str);
  89. $str = preg_replace("/一1등석:--,/","",$str);
  90. $str = preg_replace(" /2등석:--,/","",$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. $str = preg_replace("/Other:--/","",$str);
  97. $contentStr.="열차 번호: {$v[1]}, 출발역: {$v[2 ]}, 도착역: {$v[3]}, 소요시간: {$v[4]}. n{$str}nn";
  98. if($k == 12){
  99. break;
  100. }
  101. }
  102. }else{
  103. $contentStr.="아님 죄송합니다. ";
  104. }
  105. $msgType = "text";
  106. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr;
  107. 종료();
  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.="패키지가 nn에 서명되었습니다";
  115. }else{
  116. $contentStr.="패키지가 nn에 서명되지 않았습니다.";
  117. }
  118. $data = $a['data'];
  119. foreach($data를 $로 k => ;$v){
  120. $contentStr.="업데이트 시간: {$v["time"]}n물류 상태: {$v["context"]}nn";
  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(! 비어 있음( $weather))
  131. {
  132. $data = $this->json2array($weather);
  133. foreach($data as $k =>$v)
  134. {
  135. $str .=$v['날짜'].'. 날씨: '.$v['날씨'].'. 풍속: '.$v['wind'].'. 온도: '.$v['온도']."nn";
  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]!=="train")){
  146. $city = $ 키워드[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.= "Line{$c }: ".$v['dist']." 예상 시간: {$v['time']}분 nBus 경로: {$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"]}nn";
  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['온도']."nn";
  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. 개인 함수 주소($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. 프라이빗 함수 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. 비공개 함수 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. 컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  246. 컬_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  247. $file_contents = 컬_exec($ch);
  248. 컬_닫기($ ch );
  249. }
  250. return $file_contents;
  251. }
  252. 비공개 함수 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. true 반환;
  264. }else{
  265. false 반환;
  266. }
  267. }
  268. 비공개 함수 simsim($keywords){
  269. $curlPost=array("txt"=> ; $keywords);
  270. $ch = 컬_init();//컬 초기화
  271. 컬_setopt($ch,CURLOPT_URL,'http://xiaohuangji.com/ajax.aspx');//지정된 웹 캐치 페이지
  272. 컬_setopt($ch, CURLOPT_HEADER, 0);//헤더 설정
  273. 컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//결과를 문자열로 요구하고 화면에 출력
  274. 컬_setopt ($ch, CURLOPT_POST , 1);//포스트 제출 방법
  275. 컬_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  276. $data = 컬_exec($ch);//컬 실행
  277. 컬_close($ ch);
  278. return $data;
  279. }
  280. 개인 함수 pexpress($exname){
  281. $a = $this->map_text("http://www.kuaidi100.com/" );
  282. preg_match_all("/data-code="(?Pw )">(?P.*)/iU",$a, $b);
  283. $name = array();
  284. foreach($b['title'] as $k=>$v){
  285. $name[$v] = $b[' name'][$ k];
  286. }
  287. if(!empty($name[$exname])){
  288. true를 반환;
  289. }else{
  290. false를 반환;
  291. }
  292. }
  293. 비공개 함수 express($keywords,$number){
  294. $a = $this->map_text("http://www.kuaidi100.com/");
  295. preg_match_all ("/data- code="(?Pw )">(?P.*)/iU",$a,$b);
  296. $name = 배열 ​​();
  297. foreach($b['title'] as $k=>$v){
  298. $name[$v] = $b['name'][$k ];
  299. }
  300. $this->name = $name;
  301. $keywords = $name[$keywords];
  302. $url = "http://www.kuaidi100.com/query ?type={$ 키워드}&postid={$number}";
  303. $result = $this->map_text($url);
  304. $result = $this->json2array(json_decode($result) );
  305. return $result;
  306. }
  307. 개인 함수 doget ($start,$end,$time) //
  308. 을 사용하여 데이터 가져오기 {
  309. if(empty($time )){
  310. $time = date('Y-m-d',time());
  311. }else{
  312. if(substr($time,0,1)!=0){
  313. $time = date('Y-0',time()).$time;
  314. }else{
  315. $time = 날짜('Y-',time()).$time;
  316. }
  317. }
  318. $star = $this->name[$start];
  319. $end = $this->name[$end];
  320. $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#D#Z#T#K#QT#&includeStudent=00&seatTypeAndNum=&orderRequest.start_time_str=00:00--24:00" ;
  321. $optionget = array('http' => array('method' => "GET", 'header' => "User-Agent:Mozilla/4.0(호환; MSIE 7.0; Windows NT 6.0) ; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.0.04506)rnReferer:http://dynamic.12306.cn/otsquery/ query/queryRemanentTicketAction.do?method=init"));
  322. $file = file_get_contents($url, false , stream_context_create($optionget));
  323. return $this->json2array(json_decode($file));
  324. }
  325. }
  326. ?>
复代码


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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实现中文与芬兰语之间的互相翻译,我们将展示如何通过此技术突破实现人工智能在多语言翻译方面的应用。准备工作:在正式开始实现之前,我们需要进行一些

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

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

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

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

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

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

用 Python 写的文档批量翻译工具,效果竟然超越付费软件?用 Python 写的文档批量翻译工具,效果竟然超越付费软件?Aug 09, 2023 pm 05:37 PM

本文将给大家分享一个实用的Python办公自动化脚本 「利用Python批量翻译英文Word文档并保留格式」,最终效果甚至比部分收费的软件还要好!先来看看具体的工作内容。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구