洪恩在线成语词典小偷程序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 相关文章推荐
用PHP和ACCESS写聊天室(十)
Oct 09 PHP
使用php来实现网络服务
Sep 15 PHP
PHP实现时间轴函数代码
Oct 08 PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
PHP中的替代语法介绍
Jan 09 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
基于laravel belongsTo使用详解
Oct 18 PHP
在laravel中实现ORM模型使用第二个数据库设置
Oct 24 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
python使用append合并两个数组的方法
2015/04/28 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Django csrf 验证问题的实现
2018/10/09 Python
python实现键盘控制鼠标移动
2020/11/27 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
super()与this()的区别
2016/01/17 面试题
法制报告会主持词
2014/04/02 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
音乐课外活动总结
2015/05/09 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
升学宴家长致辞
2015/07/27 职场文书
小学大队委竞选口号
2015/12/25 职场文书