洪恩在线成语词典小偷程序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图片上传程序
Mar 27 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 PHP
PHP生成json和xml类型接口数据格式
May 17 PHP
3种php生成唯一id的方法
Nov 23 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
PHP合并两个或多个数组的方法
Jan 20 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 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的核心Zend
2006/09/05 PHP
PHP安全配置
2006/10/09 PHP
ajax实现无刷新分页(php)
2010/07/18 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
浅谈Python数据类型之间的转换
2016/06/08 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
解析python实现Lasso回归
2019/09/11 Python
Python list运算操作代码实例解析
2020/01/20 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
为什么要用EJB
2014/04/17 面试题
分层教学实施方案
2014/03/19 职场文书
护理专业自荐书
2014/06/04 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
技术入股协议书
2016/03/22 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL