php教程 php手册 使用PHP进行微信公众平台开发的示例

使用PHP进行微信公众平台开发的示例

Jun 06, 2016 pm 07:46 PM
사용 플랫폼 개발하다 위챗 지휘하다

这篇文章主要介绍了使用PHP进行微信公众平台开发的示例,包括基本的微信平台API调用和XML处理等,需要的朋友可以参考下

1. SAE 数据库的连接。

需要主机名和端口,以后的使用是一样的。

@ $db = new mysqli(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS,'你的应用名');

2.XML 的处理。

微信发送的消息格式都是 XML 格式,你返回的消息也必须是 XML 格式。从 XML 里提取数据,用 SimpleXML,强大又容易使用。包装成 XML 消息呢?把消息模板保存为字符串,然后用 sprintf 进行格式化输出。

解析微信服务器 POST 的数据:

//---------- 接 收 数 据 ---------- // $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据 //用SimpleXML解析POST过来的XML数据 $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID) $toUsername = $postObj->ToUserName; //获取接收方账号 $msgType = $postObj->MsgType; //消息内容

返回文本消息:

function sendText($to, $from, $content, $time) { //返回消息模板 $textTpl = " %s 0 "; //格式化消息模板 $msgType = "text"; $time = time(); $resultStr = sprintf($textTpl,$to,$from, $time,$msgType,$content); echo $resultStr; }

3. API 接口的调用。

网上有很多 API 接口,如百度翻译,有道翻译,天气预报等,对接口的调用可以直接用 file_get_contents ,也可以用 curl 的方式进行抓取,然后根据返回数据的格式进行数据解析,一般都是 xml 格式或者 json 格式,处理时用 SimpleXML 和 json_decode 是很方便的。对于抓取 API 内容,用重新封装的函数:

function my_get_file_contents($url){ if(function_exists('file_get_contents')){ $file_contents = file_get_contents($url); } else { //初始化一个cURL对象 $ch = curl_init(); $timeout = 5; //设置需要抓取的URL curl_setopt ($ch, CURLOPT_URL, $url); //设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); //在发起连接前等待的时间,如果设置为0,则无限等待 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //运行cURL,请求网页 $file_contents = curl_exec($ch); //关闭URL请求 curl_close($ch); } return $file_contents; } 百度翻译 API 的调用如下: function baiduDic($word,$from="auto",$to="auto"){ //首先对要翻译的文字进行 urlencode 处理 $word_code=urlencode($word); //注册的API Key $appid="yourAPIkey"; //生成翻译API的URL GET地址 $baidu_url = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".$appid."&q=".$word_code."&from=".$from."&to=".$to; $text=json_decode(my_get_file_contents($baidu_url)); $text = $text->trans_result; return $text[0]->dst; }

4.对 “附近” 的经纬度的计算。

用如下模型,计算正方形的经纬度。采用 Haversin 公式。

使用PHP进行微信公众平台开发的示例

//$EARTH_RADIUS = 6371;//地球半径,,平均半径为6371km /** *计算某个经纬度的周围某段距离的正方形的四个点 * *@param lng float 经度 *@param lat float 纬度 *@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米 *@return array 正方形的四个点的经纬度坐标 */ function returnSquarePoint($lng, $lat,$distance = 0.5){ $EARTH_RADIUS = 6371; $dlng = 2 * asin(sin($distance / (2 * $EARTH_RADIUS)) / cos(deg2rad($lat))); $dlng = rad2deg($dlng); $dlat = $distance/$EARTH_RADIUS; $dlat = rad2deg($dlat); return array( 'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng), 'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng), 'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng), 'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng) ); } 将查询结果按时间降序排列,message 为数据库中的一个表,location_X 为维度,location_Y 为经度: //使用此函数计算得到结果后,带入sql查询。 $squares = returnSquarePoint($lng, $lat); $query = "select * from message where location_X != 0 and location_X > ".$squares['right-bottom']['lat']." and location_X ".$squares['left-top']['lng']." and location_Y

5. 对字符串的检查。

限定为 6-20个字母,符合则返回 true ,否则返回 false,采用正则表达式进行匹配:

function inputCheck($word) { if(preg_match("/^[0-9a-zA-Z]{6,20}$/",$word)) { return true; } return false; }

6.对含中文的字符串取子串时,用 mb_substr 进行截取

7.检测中英文混合的字符串长度

"; //结果:22 echo mb_strlen($str,"UTF8")."
"; //结果:12 $strlen = (strlen($str)+mb_strlen($str,"UTF8"))/2; echo $strlen; //结果:17 ?>

8. 检测是否含有中文

"; //if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在GB2312情况下使用 //if (preg_match("/^[\x7f-\xff]+$/", $str)) { //兼容gb2312,utf-8 //判断字符串是否全是中文 if (preg_match("/[\x7f-\xff]/", $str)) { //判断字符串中是否有中文 echo "正确输入"; } else { echo "错误输入"; } ?>

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

위챗 실명인증 신분증 변경 방법 위챗 실명인증 신분증 변경 방법 Apr 24, 2024 am 10:58 AM

위챗 실명인증 신분증 변경 방법

WeChat Moments에서 방문자를 볼 수 있나요? WeChat Moments에서 방문자를 볼 수 있나요? May 06, 2024 pm 01:30 PM

WeChat Moments에서 방문자를 볼 수 있나요?

WeChat은 상대방이 읽었는지 어떻게 알 수 있나요? WeChat은 상대방이 읽었는지 어떻게 알 수 있나요? Apr 24, 2024 pm 01:45 PM

WeChat은 상대방이 읽었는지 어떻게 알 수 있나요?

'아이폰16이 위챗을 지원하지 않을 수도 있다'는 루머가 돌고 있으며, 중국 애플의 기술 컨설턴트는 앱 스토어 수수료에 대해 텐센트와 소통 중이라고 전했다. '아이폰16이 위챗을 지원하지 않을 수도 있다'는 루머가 돌고 있으며, 중국 애플의 기술 컨설턴트는 앱 스토어 수수료에 대해 텐센트와 소통 중이라고 전했다. Sep 02, 2024 pm 10:45 PM

'아이폰16이 위챗을 지원하지 않을 수도 있다'는 루머가 돌고 있으며, 중국 애플의 기술 컨설턴트는 앱 스토어 수수료에 대해 텐센트와 소통 중이라고 전했다.

BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까? BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까? Apr 26, 2024 am 09:40 AM

BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까?

WeChat에서 차단한 사람이 복원되었다는 사실을 알고 계셨나요? WeChat에서 차단한 사람이 복원되었다는 사실을 알고 계셨나요? Apr 24, 2024 pm 01:34 PM

WeChat에서 차단한 사람이 복원되었다는 사실을 알고 계셨나요?

DeepSeek 이미지 생성 자습서 DeepSeek 이미지 생성 자습서 Feb 19, 2025 pm 04:15 PM

DeepSeek 이미지 생성 자습서

삭제된 WeChat 채팅 기록을 복구하는 방법 삭제된 WeChat 채팅 기록을 복구하는 방법 Apr 24, 2024 am 11:36 AM

삭제된 WeChat 채팅 기록을 복구하는 방법

See all articles