洪恩在线成语词典小偷程序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 相关文章推荐
4.与数据库的连接
Oct 09 PHP
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
编写php应用程序实现摘要式身份验证的方法详解
Jun 08 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
PHP递归创建多级目录
Nov 05 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
通过PHP简单实例介绍文件上传
Dec 16 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
php利用header函数下载各种文件
Aug 24 PHP
php使用curl实现简单模拟提交表单功能
May 15 PHP
php curl上传、下载、https登陆实现代码
Jul 23 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中的字符串函数
2006/10/09 PHP
PHP has encountered an Access Violation
2007/01/15 PHP
PHP ajax 分页类代码
2008/11/13 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python批量转换文件编码格式
2015/05/17 Python
Python实现的彩票机选器实例
2015/06/17 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
用python实现对比两张图片的不同
2018/02/05 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
Python文件读写常见用法总结
2019/02/22 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
CSS3伪类选择器:nth-child()
2009/04/02 HTML / CSS
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
计算机个人求职信范例
2014/01/24 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
担保书怎么写
2014/04/01 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
2016年寒假家长评语
2015/10/10 职场文书