php 批量替换程序实例代码
代码如下 | 复制代码 |
/***************************************************************************
//分析shortname
//把末尾的/去掉 //罗列所有目录 } exit();
function hx_dealdir($dir){ $ext=substr(strrchr($file,"."), 1); echo "<li>$file "; }
</body> |
最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的~
今天来分享一下开发经验~
微信公众平台提供的接口很简单,先看看消息交互流程:
说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单。
下面写个实例,开发微信智能聊天机器人:
1. 注册微信公众平台账号
https://mp.weixin.qq.com/
注: 目前一张身份证只能注册两个账号,账号名称关乎加V认证,请慎重注册。
2. 申请服务器/虚拟主机
没有服务器/虚拟主机的童鞋可以使用BAE和SAE,不多介绍。
3. 开启开发者模式
微信公众平台有两个模式,一个是编辑模式(傻瓜模式),简单但功能单一。另一个是开发者模式,可以通过开发实现复杂功能。两个模式互斥,显而易见,登录微信公众平台并通过“高级功能”菜单开启开发者模式。
4. 填写接口配置信息
同样是在“高级功能”菜单中配置,需要配置两项参数:
URL: 开发者应用访问地址,目前仅支持80端口,以“http://www.你的域名.com/weixin/index.php”为例。
TOKEN: 随意填写,用于生成签名,以“你的域名”为例。
填写完把下面代码保存为index.php并上传至http://www.你的域名.com/weixin/目录,最后点击“提交”完成验证。
代码如下 | 复制代码 |
<?php private function checkSignature() { |
这玩意儿就是微信公众平台校验URL是否正确接入,研究代码没有实质性意义,验证完即可删除文件,就不详细说明了,有兴趣的童鞋可以查看官方文档。
http://mp.weixin.qq.com/wiki/index.php
5. 开发微信公众平台功能
OK,上面提到了,微信公众平台与开发者之间的数据交互是通过XML完成的,既然用到XML,当然得遵循规范,所以在着手开发之前先看看官方接口文档提供的XML规范,以文本消息为例:
当用户向微信公众账号发送消息时,微信服务器会POST给开发者一些数据:
代码如下 | 复制代码 |
<xml> <!--开发者微信号--> <ToUserName><![CDATA[toUser]]></ToUserName> <!--发送方帐号(OpenID)--> <FromUserName><![CDATA[fromUser]]></FromUserName> <!--消息创建时间 (整型)--> <CreateTime>12345678</CreateTime> <!--消息类别 (text文本消息)--> <MsgType><![CDATA1]></MsgType> <!--消息内容--> <Content><![CDATA[content]]></Content> <!--消息ID (64位整型)--> <MsgId>1234567890123456</MsgId> </xml> |
开发者在处理完消息后需要返回数据给微信服务器:
代码如下 | 复制代码 |
<xml> <!--接收方帐号(OpenID)--> <ToUserName><![CDATA[toUser]]></ToUserName> <!--开发者微信号--> <FromUserName><![CDATA[fromUser]]></FromUserName> <!--消息创建时间 (整型)--> <CreateTime>12345678</CreateTime> <!--消息类别 (text文本消息)--> <MsgType><![CDATA1]></MsgType> <!--回复消息内容--> <Content><![CDATA[content]]></Content> <!--星标操作(位0x0001被标志时 星标刚收到的消息)--> <FuncFlag>0</FuncFlag> </xml> |
除文本消息外,微信公众平台还支持用户发送图片消息、地理位置消息、链接消息、事件推送,而开发者还可以向微信公众平台回复音乐消息和图文消息,各类消息XML规范也可以参见官方文档。
来看看官方提供的一个PHP示例,我做了一些精简:
代码如下 | 复制代码 |
<?php //---------- 接 收 数 据 ---------- // $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据 //用SimpleXML解析POST过来的XML数据 $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
//返回消息模板 $msgType = "text"; //消息类型 //格式化消息模板 |
把代码保存为index.php并上传至http://www.你的域名.com/weixin/目录,如果刚才没删除该文件,则直接覆盖。
现在用户通过微信公众平台发送任何消息公众账号均会返回一条内容为“http://www.你的域名.com”的消息。
接下来需要做的就是根据用户消息动态返回结果~
SimSimi(小黄鸡)是目前比较火的聊天机器人,我用CURL开发了一个免费的SimSimi(小黄鸡)接口,传入关键词会返回文本回复,这部分不是本文重点,就不多说明,直接上代码:
代码如下 | 复制代码 |
<?php //---------- 接 收 数 据 ---------- // $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据 //用SimpleXML解析POST过来的XML数据 $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
//返回消息模板 $msgType = "text"; //消息类型 //格式化消息模板 |
把上面两段代码整合在一起就大功告成了,需要说明一点,微信服务器在5秒内收不到响应会断掉连接,通过此接口有可能会超时,且SimSimi已经屏蔽了BAE和SAE上的抓取请求,推荐使用SimSimi官方收费API,速度比较快~
服务器端
为实现截图的程序必须借助服务器端程序:http://code.google.com/p/wkhtmltopdf/
可将网页转换为pdf或者图片,32和64位有区别,找个适合自己服务器的版本。
安装
安装过程十分简单:解压 -> 找个合适的路径放下…
执行
命令行调用1
代码如下 | 复制代码 |
/servers/app/qtwebkit/wkHtmlToImage 111cn.net www.111cn.net.png |
默认的清晰度比较高,图片会很大,生成图片需要一定的时间。
php
代码如下 | 复制代码 |
exec('/servers/app/qtwebkit/wkHtmlToImage 111cn.net www.111cn.net.png'); |
具体的使用方法
代码如下 | 复制代码 |
<?php |
中文乱码问题
主要看服务器是否支持中文语言,如果截图中出现乱码,直接装个中文包就好了。
代码如下 | 复制代码 |
yum install fonts-chinese |
以前有同事需要我清除memcache缓存,我总是直接使用kill命令结束掉这个进程,后来才知道有更简单的方法,来清除memcachd的缓存,记录一下,以备不时之需:
1.首先使用ssh命令登录到memcached所在服务器,命令如下:
代码如下 | 复制代码 |
#ssh root@192.168.1.1 |
输入root密码后可登录对应的服务器;
2.使用telnet命令后接tomcat服务配置文件中指定的memcached启动端口:
代码如下 | 复制代码 |
#telnet localhost 11211 |
之后显示:
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
3.此时输入如下内容并回车即可清除缓存内容:
代码如下 | 复制代码 |
flush_all |
4.最后退出telnet使用quit命令,再exit退出远程主机。
清除过期缓存
代码如下 | 复制代码 |
/** * Memcached的过期内存回收 */ class mem_dtor extends Memcache { private $server_id; public function __construct($host,$port) { $this->server_id = "$host:$port"; $this->connect($host,$port); } // 回收所有过期的内存 public function gc() { $t = time(); $_this = $this; $func = function($key,$info) use ($t,$_this) { if($info[1] - $t delete($key); } }; $this->lists($func); } // 查看所有缓存内容的信息 public function info() { $t = time(); $func = function($key,$info) use ($t) { echo $key,' => Exp:',$info[1] - $t,"n"; //查看缓存对象的剩余过期时间 }; $this->lists($func); } private function lists($func) { $sid = $this->server_id; $items = $this->getExtendedStats('items'); //获取memcached状态 foreach($items[$sid]['items'] as $slab_id => $slab) //获取指定server id 的 所有Slab { $item = $this->getExtendedStats('cachedump',$slab_id,0); //遍历所有Slab foreach($item[$sid] as $key => $info) //获取Slab中缓存对象信息 { $func($key,$info); } } } } $mem = new mem_dtor('127.0.0.1',11211); $mem->info();//查看状态 $mem->gc(); //回收 |
memcache缓存的批量删除方案
memcache默认只支持使用delete(key)和 flush_all,这两种方法都太极端了,不能满足用户的特定需求,如:批量删除‘aaaaaaaa_'开头的所有缓存,这个时候该怎么办?
1 getExtendStats 遍历所有item,删除指定的key(不推荐)
网上有对应的php代码和perl程序,感兴趣的可以看看,在本地测试时可以使用,但是在真是服务器上请不要使用。
2 memcache结合DB
方法:每次set缓存时,将key值存入数据库,在要删除缓存时查询数据库,查询出对应的信息,在memcache中将其删除
缺点:浪费数据裤磁盘
3 memcache伪命名空间(推荐)
memcache默认不提供命名空间,但可以设置一个全局变量,来模拟命名空间,代码如下:
代码如下 | 复制代码 |
<?php
|
以上是个人见解,欢迎拍板
今天在一个朋友网站发现被加密码的php文件输出是乱码了,后来发现php使用了zend optimizer加密了,我们只要在机器上安装Zend Optimizer就可以了,我使用的是Directadmin,下面给大家介绍安装步骤。一个客户反应网站乱码,使用了zend optimizer加密,检查了下vps发现没装zend optimizer,安装后即可解决乱码问题
代码如下 | 复制代码 |
cd /usr/local/directadmin/custombuild/ vim ./options.conf |
找到zend = no改成zend =yes,然后再执行./build zend,完成后会看到下面的提示
代码如下 | 复制代码 |
|
然后重启下apache即可
代码如下 | 复制代码 |
|
相关文章
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07- ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
本文实例讲述了jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)。分享给大家供大家参考,具体如下:这里介绍的jQuery拉动页面固定顶部显示,及自动消失效果,可能ie浏览器下有问题,不过火狐什么的都可以运行看效果...2015-10-30- 这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30