洪恩在线成语词典小偷程序php版

 更新时间:2012年04月20日 17:20:51   作者:  
去年在学习用php做小偷程序时的一个练习之作,希望能给有同样需求的朋友带来些帮助,程序主要流程是获取洪恩在线的成语词典查询结果并在当前页面显示出来(俗称小偷程序),使用语言为php
主要函数是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实现通过Luhn算法校验信用卡卡号是否有效

    PHP实现通过Luhn算法校验信用卡卡号是否有效

    这篇文章主要介绍了PHP实现通过Luhn算法校验信用卡卡号是否有效,实例分析了php实现Luhn算法及相关应用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 用PHP将Unicode 转化为UTF-8的实现方法(推荐)

    用PHP将Unicode 转化为UTF-8的实现方法(推荐)

    下面小编就为大家带来一篇用PHP将Unicode 转化为UTF-8的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • PHP实现通过strace定位故障原因的方法

    PHP实现通过strace定位故障原因的方法

    这篇文章主要介绍了PHP实现通过strace定位故障原因的方法,结合实例形式分析了出现高负载情况下使用strace定位故障原因的相关命令与操作技巧,需要的朋友可以参考下
    2018-04-04
  • php5编程中的异常处理详细方法介绍

    php5编程中的异常处理详细方法介绍

    比较详细的关于php5的异常处理方法,而且给出了,多种方法
    2008-07-07
  • php 无限极分类

    php 无限极分类

    至于添加删除之类的功能我就不多写了!仔细看看就知道这么用了. 难的是显示方面 希望高手扩展一下! 这是类
    2008-03-03
  • PHP源码之explode使用说明

    PHP源码之explode使用说明

    最近一直在想有关字符串操作的一些效率上的事情,截取字串的问题,都会避免不了重新分配空间的消耗,也顺带看了explode这个函数的源码,理解下,拿出自己的分析共享下
    2011-08-08
  • php,ajax实现分页

    php,ajax实现分页

    之前用php写好了个分页程序,今天试着结合ajax实现这个功能,成功了。哈哈,代码不难写,但写好之后测试发现出了,然后又调试了好段时间才正确。深感开发人员的时间大部分都是花在调试代码上的。
    2008-03-03
  • 使用纯php代码实现页面伪静态的方法

    使用纯php代码实现页面伪静态的方法

    这篇文章主要介绍了使用纯php代码实现页面伪静态的方法,涉及php服务器预定义变量及正则匹配的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • PHP十六进制颜色随机生成器功能示例

    PHP十六进制颜色随机生成器功能示例

    这篇文章主要介绍了PHP十六进制颜色随机生成器功能,结合具体实例形式分析了php随机生成十六进制数值表示形式的相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • 利用PHPExcel读取Excel的数据和导出数据到Excel

    利用PHPExcel读取Excel的数据和导出数据到Excel

    本篇文章主要介绍了利用PHPExcel读取Excel的数据和导出数据到Excel的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05

最新评论