洪恩在线成语词典小偷程序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 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
PHP之COOKIE支持详解
Sep 20 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
php获取域名的google收录示例
Mar 24 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
用php守护另一个php进程的例子
Feb 13 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
php的扩展写法总结
May 14 PHP
PHP哈希表实现算法原理解析
Dec 11 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
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
解析php中const与define的应用区别
2013/06/18 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
设定php简写功能的方法
2019/11/28 PHP
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
tab栏切换原理
2017/03/22 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
简单了解python协程的相关知识
2019/08/31 Python
Python @property使用方法解析
2019/09/17 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Python实现弹球小游戏
2020/08/01 Python
审核会计岗位职责
2013/11/08 职场文书
财务会计应届生求职信
2013/11/24 职场文书
新闻编辑求职信
2014/04/09 职场文书
小学家长评语大全
2014/04/16 职场文书
在职证明书模板
2015/06/15 职场文书
新闻稿标题
2015/07/18 职场文书
高中生军训感言
2015/08/01 职场文书