洪恩在线成语词典小偷程序php版


Posted in PHP onApril 20, 2012

主要函数是file_get_contents,主程序分两段,跟我一起看过来吧(凡人博客原创代码,转载请注明)。

function escape($str){ 
preg_match_all('/[\x80-\xff].|[\x01-\x7f]+/',$str,$r); 
$ar = $r[0]; 
foreach($ar as $k=>$v){ 
if(ord($v[0]) < 128) 
$ar[$k] = rawurlencode($v); 
else 
$ar[$k] = '%u'.bin2hex(iconv('GB2312','UCS-2',$v)); 
} 
return join('',$ar); 
}

上面的函数主要是用php实现JavaScript的escape编码过程,因为洪恩的查询接口需要传递过去的值是经过escape编码后的成语条目。
function chacy($chengyu){ 
$chengyu=escape($chengyu); 
$text=@file_get_contents('http://study.hongen.com/dict/ndsearchchengyu.aspx?type=exact&word='.$chengyu); 
$pos1=strpos($text,'<table class="root">'); 
$pos2=strrpos($text,'<table class="english">'); 
$text=substr($text,$pos1,$pos2-$pos1); 
//把字符集由原来的UTF-8转换到GB2312,注意在GB2312之后加上了//IGNORE,强制遇到特殊字符也继续转换,因为在遇到汉字“一”的时候iconv函数会终止转换 
$text=iconv('UTF-8','GB2312//IGNORE',$text); 
if (strpos($text,'出处')){ 
return $text; 
} 
}

上面是自己定义的成语查询函数,首先escape编码要查询的成语条目,然后使用file_get_contents函数获取“http://study.hongen.com/dict/ndsearchchengyu.aspx?type=exact&word=”页面查询的内容,使用substr去除前后一些不需要的多余代码,中间就是成语条目的解释部分(包括拼音、解释、出处、例句),最后记得要转码,洪恩返回的结果是UTF-8编码,一般情况下我们需要转换为GB2312编码,上面我写了一个有关iconv函数转换编码有时会出现bug的注释文本,需要加上一个//IGNORE参数。最后判断结果中是否存在“出处”二字,有的话说明整个函数运行成功,可以把获取到的内容return给页面了。

程序主体实现完成,只需在相应位置调用查询函数:chacy 就可以了。

PHP 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
php定时执行任务设置详解
Feb 06 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
PHP简单计算两个时间差的方法示例
Jun 20 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
PHP实现递归的三种方法
Jul 04 PHP
php 文件上传实例代码
Apr 19 #PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 #PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 #PHP
php递归创建和删除文件夹的代码小结
Apr 13 #PHP
redis 队列操作的例子(php)
Apr 12 #PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 #PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 #PHP
You might like
php4的session功能评述(三)
2006/10/09 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
php字符串截取函数用法分析
2014/11/25 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python word转pdf代码实例
2019/08/16 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
Python爬虫开发与项目实战
2020/12/16 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
售后客服个人自我评价
2014/09/14 职场文书
优秀团员事迹材料
2014/12/25 职场文书
python 逐步回归算法
2021/04/06 Python
详解Python中*args和**kwargs的使用
2022/04/07 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL