洪恩在线成语词典小偷程序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 19 PHP
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
PHP过滤★等特殊符号的正则
Jan 27 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
PHP常用的小程序代码段
Nov 14 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 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
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP制作万年历
2015/01/07 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
accesskey 提交
2006/06/26 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
JS中的三个循环小结
2017/06/20 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
PyQt QCombobox设置行高的方法
2019/06/20 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
实习鉴定范文
2013/12/19 职场文书
劳资专员岗位职责
2013/12/27 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
产品调价通知函
2015/04/20 职场文书
公司地址变更通知
2015/04/25 职场文书