洪恩在線成語詞典小偷程序php版
更新時間:2012年04月20日 17:20:51 作者:
去年在學習用php做小偷程序時的一個練習之作,希望能給有同樣需求的朋友帶來些幫助,程序主要流程是獲取洪恩在線的成語詞典查詢結果并在當前頁面顯示出來(俗稱小偷程序),使用語言為php
主要函數(shù)是file_get_contents,主程序分兩段,跟我一起看過來吧(凡人博客原創(chuàng)代碼,轉載請注明)。
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);
}
上面的函數(shù)主要是用php實現(xiàn)JavaScript的escape編碼過程,因為洪恩的查詢接口需要傳遞過去的值是經(jīng)過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,強制遇到特殊字符也繼續(xù)轉換,因為在遇到漢字“一”的時候iconv函數(shù)會終止轉換
$text=iconv('UTF-8','GB2312//IGNORE',$text);
if (strpos($text,'出處')){
return $text;
}
}
上面是自己定義的成語查詢函數(shù),首先escape編碼要查詢的成語條目,然后使用file_get_contents函數(shù)獲取“http://study.hongen.com/dict/ndsearchchengyu.aspx?type=exact&word=”頁面查詢的內容,使用substr去除前后一些不需要的多余代碼,中間就是成語條目的解釋部分(包括拼音、解釋、出處、例句),最后記得要轉碼,洪恩返回的結果是UTF-8編碼,一般情況下我們需要轉換為GB2312編碼,上面我寫了一個有關iconv函數(shù)轉換編碼有時會出現(xiàn)bug的注釋文本,需要加上一個//IGNORE參數(shù)。最后判斷結果中是否存在“出處”二字,有的話說明整個函數(shù)運行成功,可以把獲取到的內容return給頁面了。
程序主體實現(xiàn)完成,只需在相應位置調用查詢函數(shù):chacy 就可以了。
復制代碼 代碼如下:
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);
}
上面的函數(shù)主要是用php實現(xiàn)JavaScript的escape編碼過程,因為洪恩的查詢接口需要傳遞過去的值是經(jīng)過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,強制遇到特殊字符也繼續(xù)轉換,因為在遇到漢字“一”的時候iconv函數(shù)會終止轉換
$text=iconv('UTF-8','GB2312//IGNORE',$text);
if (strpos($text,'出處')){
return $text;
}
}
上面是自己定義的成語查詢函數(shù),首先escape編碼要查詢的成語條目,然后使用file_get_contents函數(shù)獲取“http://study.hongen.com/dict/ndsearchchengyu.aspx?type=exact&word=”頁面查詢的內容,使用substr去除前后一些不需要的多余代碼,中間就是成語條目的解釋部分(包括拼音、解釋、出處、例句),最后記得要轉碼,洪恩返回的結果是UTF-8編碼,一般情況下我們需要轉換為GB2312編碼,上面我寫了一個有關iconv函數(shù)轉換編碼有時會出現(xiàn)bug的注釋文本,需要加上一個//IGNORE參數(shù)。最后判斷結果中是否存在“出處”二字,有的話說明整個函數(shù)運行成功,可以把獲取到的內容return給頁面了。
程序主體實現(xiàn)完成,只需在相應位置調用查詢函數(shù):chacy 就可以了。
您可能感興趣的文章:
- 一個圖片地址分解程序(用于PHP小偷程序)
- php下通過IP獲取地理位置的代碼(小偷程序)
- PHP通過CURL實現(xiàn)定時任務的圖片抓取功能示例
- 利用php抓取蜘蛛爬蟲痕跡的示例代碼
- PHP抓取HTTPS內容和錯誤處理的方法
- PHP怎樣用正則抓取頁面中的網(wǎng)址
- PHP抓取淘寶商品的用戶曬單評論+圖片+搜索商品列表實例
- PHP網(wǎng)頁抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享
- 分享PHP源碼批量抓取遠程網(wǎng)頁圖片并保存到本地的實現(xiàn)方法
- php curl抓取網(wǎng)頁的介紹和推廣及使用CURL抓取淘寶頁面集成方法
- PHP小偷程序的設計與實現(xiàn)方法詳解
相關文章
PHP實現(xiàn)通過Luhn算法校驗信用卡卡號是否有效
這篇文章主要介紹了PHP實現(xiàn)通過Luhn算法校驗信用卡卡號是否有效,實例分析了php實現(xiàn)Luhn算法及相關應用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03用PHP將Unicode 轉化為UTF-8的實現(xiàn)方法(推薦)
下面小編就為大家?guī)硪黄肞HP將Unicode 轉化為UTF-8的實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02使用純php代碼實現(xiàn)頁面?zhèn)戊o態(tài)的方法
這篇文章主要介紹了使用純php代碼實現(xiàn)頁面?zhèn)戊o態(tài)的方法,涉及php服務器預定義變量及正則匹配的相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07利用PHPExcel讀取Excel的數(shù)據(jù)和導出數(shù)據(jù)到Excel
本篇文章主要介紹了利用PHPExcel讀取Excel的數(shù)據(jù)和導出數(shù)據(jù)到Excel的相關知識,具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05