最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP制作百度詞典查詞采集器

 更新時(shí)間:2015年01月29日 17:05:19   投稿:hebedich  
這篇文章主要介紹了PHP制作百度詞典查詞采集器的相關(guān)資料,需要的朋友可以參考下

百度dict 采集樣本

寫的采集百度dict詞典翻譯后的所有結(jié)果數(shù)據(jù),當(dāng)然附帶了13.5w單詞庫和采集簡單的案例,這里我把寫出的主要類dict.class.php放出來,項(xiàng)目地址http://github.com/widuu/baidu_dict,有需要的直接fork就可以了~么么噠,這東西用的人很少,所以有用的兄弟拿走了哈~

<?php
/**
 * dict.class.php 采集百度詞典翻譯內(nèi)容
 *
 * @copyright      (C) 2014 widuu
 * @license       http://www.widuu.com
 * @lastmodify     2014-2-15
 */
 
 
header("content-type:text/html;charset=utf8");
class Dict{

	private $word;
	
	//顯示的條數(shù)
	private static $num = 10;

	public function __construct(){}
	
	
	/**
   * 公用返回百度采集數(shù)據(jù)的方法
   * @param string 英文單詞
   * retun array(
	 *				symbol" => 音標(biāo)
	 *				"pro"	 => 發(fā)音
	 *				"example"=> 例句
	 *				"explain"=> 簡明釋義
	 *				"synonym"=> 同反義詞
	 *				"phrase" => 短語數(shù)組
	 *			)
   *
	 */
	public function content($word){
		 $this -> word = $word;
		 $symbol = $this -> Pronounced();
		 $pro	 = $this->getSay();
		 $example = $this -> getExample();
		 $explain = $this -> getExplain();
		 $synonym = $this -> getSynonym();
		 $phrase = $this -> getPhrase();
		 $result = array(
				"symbol" => $symbol,		//音標(biāo)
				"pro"	 => $pro,			//發(fā)音
				"example"=> $example,		//例句
				"explain"=> $explain,		//簡明釋義
				"synonym"=> $synonym,		//同反義詞
				"phrase" => $phrase 		//短語數(shù)組
			);
		return $result;
	}


	/**
   * 遠(yuǎn)程獲取百度翻譯內(nèi)容
   * get function curl
   * retun string
   *
	 */

	private function getContent(){
 		$useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0";
 		$ch = curl_init();
 		$url = "http://dict.baidu.com/s?wd=".$this->word;
 		curl_setopt($ch, CURLOPT_URL, $url);
 		curl_setopt($ch, CURLOPT_USERAGENT,$useragent);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
		curl_setopt($ch, CURLOPT_HTTPGET, 1);
		curl_setopt($ch, CURLOPT_AUTOREFERER,1);
		curl_setopt($ch, CURLOPT_HEADER, 0); 
		curl_setopt($ch, CURLOPT_TIMEOUT, 30);
		$result = curl_exec($ch);
		if (curl_errno($curl)) {
			echo 'Errno'.curl_error($curl);
		}
		curl_close($ch);
		return $result;
	}


	/**
   * 獲取百度翻譯發(fā)音
   * retun array(英,美)
   *
	 */

	private function Pronounced(){
		$data = $this -> getContent();
		preg_match_all("/\"EN\-US\"\>(.*)\<\/b\>/Ui",$data,$pronounced);
		return array(
			'en' => $pronounced[1][0],
			'us' => $pronounced[1][1]
		);
	}

	/**
	 * 獲取百度翻譯發(fā)音
	 * return array(英,美)
	 *
	 */

	private function getSay(){
		$data = $this -> getContent();
		preg_match_all("/url=\"(.*)\"/Ui",$data,$pronounced);
		return array(
			'en' => $pronounced[1][0],
			'us' => $pronounced[1][1]
		);	
	}

	/**
   * 獲取百度翻譯例句
   * return array() 多維數(shù)組 例句
   * 
	 */

	private function getExample(){
		$str = "";
		$data = $this -> getContent();
		preg_match_all("/var example_data = (.*)\]\;/Us",$data,$example);
	  $data1 = "[[[".ltrim($example[1][0],"[");
	  $data2 = explode("[[[",$data1);
	  $num = count(array_filter($data2));
		foreach($data2 as $key => $value){
		 	$data3 = explode("[[","[[".$value);
		 	foreach ($data3 as $k => $v) {
		 		preg_match_all("/\[\"(.*)\",/Us","[".$v, $match);
		 		if(!empty($match[1])){
		 			$str .= implode($match[1]," ")."@";
		 		}
		 	}
		}
		$data4 = trim($str,"@");
		$data5 = explode("@", $data4);
		$result = array_chunk($data5, 2);
		return $result;
	}

	/**
   * 獲取簡明釋義
   * return array (x => "詞性",b => "附屬")
   * 
	 **/

	private function getExplain(){
		$data = $this -> getContent();
		preg_match_all("/id\=\"en\-simple\-means\"\>(.*)\<div(\s+)class\=\"source\"\>/Us",$data,$explain);
		$r_data = $explain[1][0];
		preg_match_all("/\<p\>\<strong\>(?P<adj>.*)\<\/strong\>\<span\>(?P<name>.*)\<\/span\>\<\/p\>/Us", $r_data, $a_data);
		preg_match_all("/\<span\>(?P<tag>[^\>]+)\:\<a(\s+)href\=\"(.*)\"\>(?P<word>.*)\<\/a\>\<\/span\>/Us", $r_data, $b_data);
		
		$result = array();
		foreach ($a_data["adj"] as $key => $value) {
			$result[$value] = $a_data["name"][$key];
		}
		
		$word_b = array();
		foreach ($b_data["tag"] as $key => $value) {
			$word_b[$value] = strip_tags($b_data["word"][$key]);
		}
		
		$result_data = array("x" => $result,"b" => $word_b);

 		return $result_data;
	}


	/**
   * 獲取同義詞
   * return array(0 => "同義詞", 1 => "反義詞") 一般為多維數(shù)組
   * 
	 */

	private function getSynonym(){
		$data = $this -> getContent();
		preg_match_all("/id=\"en\-syn\-ant\"\>(.*)<div(\s+)class\=\"source\">/Us",$data,$synonym);
		$content = $synonym[1][0];
		$data1 = explode("</dl>", $content);
		$result = array();
		$data2 = array();
		foreach ($data1 as $key => $value) {
			preg_match_all("/\<strong\>(?P<adj>.*)\&nbsp\;\<\/strong\>\<\/div\>\<div(\s+)class\=\"syn\-ant\-list\"\>\<ul\>(?<content>.*)\<\/ul\>/Us", $value, $r_data);
			$data2[$key]["adj"] = $r_data["adj"];
			$data2[$key]["content"] = $r_data["content"];
		}

		foreach ($data2 as $key => $value) {
			foreach ($value["content"] as $k => $v) {
				if(!empty($v)){
					preg_match_all("/\<li\>\<p\>(?P<title>.*)\<\/p\>(?P<value>.*)\<\/li>/Us", $v, $v_data);
					foreach ($v_data['title'] as $m => $d) {
						$data = strip_tags(preg_replace("<</a>>"," ", $v_data["value"][$m]));
						$result[$key][$value["adj"][$k]][$d] = $data;
					}
				}
			}
		}
 		return $result;
	}

	/**
   * 獲取短語詞組
   * return array (key => value) 一維或者多維數(shù)組
   * 
	 */

	private function getPhrase(){
		$num = self::$num;
		$data = $this -> getContent();
		preg_match_all("/id=\"en\-phrase\"\>(.*)\<div class\=\"source\"\>/Us",$data,$phrase);
		$data = explode("</dd>",$phrase[1][0]);
		$data1 = array_slice($data,0,$num);
		$result = array();
		foreach ($data1 as $key => $value) {
			$data2 = explode("</p>", $value);
			$n = count($data2);
			if($n<=3){
				$result[str_replace("&nbsp;","",strip_tags($data2[0]))] = strip_tags($data2[1]);
			}else{
				$data3 = array_slice($data2,0,$n-1);
				$data4 = array_slice($data2,0,2);
				$res = array_diff($data3,$data4);
				$data5 = array_chunk($res,2);
				$key_value = trim(str_replace("&nbsp;","",strip_tags($data4[0])));
				$result[$key_value] = strip_tags($data4[1]);
				foreach ($data5 as $key => $value) {
					foreach ($value as $k => $v) {
						$value[$k] = strip_tags($v);
					}
					$array = array($result[$key_value],$value);
					if (array_key_exists($key_value, $result)){
						$result[$key_value] = $array;
					}
				}
				
			}
		}
		return $result;
	}

	/**
	 * 將數(shù)組轉(zhuǎn)換為字符串
	 *
	 * @param  array  $data    數(shù)組
	 * @param  bool  $isformdata 如果為0,則不使用new_stripslashes處理,可選參數(shù),默認(rèn)為1
	 * @return  string 返回字符串,如果,data為空,則返回空
	 */
	private function array2string($data, $isformdata = 1) {
	  if($data == '') return '';
	  if($isformdata) $data = $this->new_stripslashes($data);
	  return addslashes(var_export($data, TRUE));
	}

	/**
	 * 返回經(jīng)stripslashes處理過的字符串或數(shù)組
	 * @param $string 需要處理的字符串或數(shù)組
	 * @return mixed
	 */
	private function new_stripslashes($string) {
	  if(!is_array($string)) return stripslashes($string);
	  foreach($string as $key => $val) $string[$key] = $this->new_stripslashes($val);
	  return $string;
	}

}

// $word = new dict("express");
// $word ->content();

以上就是本文的全部內(nèi)容了,非常實(shí)用的功能,希望小伙伴們能夠喜歡。

相關(guān)文章

  • PHP連接MYSQL數(shù)據(jù)庫實(shí)例代碼

    PHP連接MYSQL數(shù)據(jù)庫實(shí)例代碼

    現(xiàn)在做的項(xiàng)目需要php連接mysql數(shù)據(jù)庫,雖然之前學(xué)過,但是現(xiàn)在基本上都給忘了,之后通過查找相關(guān)資料找到了解決方法,下面小編把具體方法分享在腳本之家平臺供大家學(xué)習(xí)
    2016-01-01
  • laravel框架模型、視圖與控制器簡單操作示例

    laravel框架模型、視圖與控制器簡單操作示例

    這篇文章主要介紹了laravel框架模型、視圖與控制器簡單操作,結(jié)合簡單示例形式分析了laravel框架模型、視圖與控制器的基本操作技巧,需要的朋友可以參考下
    2019-10-10
  • PHP 枚舉類型的管理與設(shè)計(jì)知識點(diǎn)總結(jié)

    PHP 枚舉類型的管理與設(shè)計(jì)知識點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于PHP 枚舉類型的管理與設(shè)計(jì)知識點(diǎn)總結(jié),需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • ThinkPHP中session函數(shù)詳解

    ThinkPHP中session函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了ThinkPHP中session函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • php生成二維碼圖片方法匯總

    php生成二維碼圖片方法匯總

    本文給大家匯總介紹了2種php生成二維碼圖片的方法,一個(gè)是利用谷歌api一個(gè)是實(shí)用phpqrcode類庫,都非常方便,有需要的小伙伴可以參考下
    2016-12-12
  • 比較好用的PHP防注入漏洞過濾函數(shù)代碼

    比較好用的PHP防注入漏洞過濾函數(shù)代碼

    PHP整站防注入程序,需要在公共文件中require_once本文件,因?yàn)楝F(xiàn)在網(wǎng)站被注入攻擊現(xiàn)象很嚴(yán)重,所以推薦大家使用
    2012-04-04
  • laravel5 使用try catch的實(shí)例詳解

    laravel5 使用try catch的實(shí)例詳解

    這篇文章主要介紹了laravel5 使用try catch的相關(guān)知識,需要的朋友可以參考下
    2017-11-11
  • Thinkphp5.0 框架Model模型簡單用法分析

    Thinkphp5.0 框架Model模型簡單用法分析

    這篇文章主要介紹了Thinkphp5.0 框架Model模型簡單用法,結(jié)合實(shí)例形式分析了thinkPHP5.0框架模型Model常用方法的簡單使用技巧,需要的朋友可以參考下
    2019-10-10
  • PHP 數(shù)組遍歷foreach語法結(jié)構(gòu)及實(shí)例

    PHP 數(shù)組遍歷foreach語法結(jié)構(gòu)及實(shí)例

    下面小編就為大家?guī)硪黄狿HP 數(shù)組遍歷foreach語法結(jié)構(gòu)及實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • TP5框架頁面跳轉(zhuǎn)樣式操作示例

    TP5框架頁面跳轉(zhuǎn)樣式操作示例

    這篇文章主要介紹了TP5框架頁面跳轉(zhuǎn)樣式操作,結(jié)合實(shí)例形式分析了TP5框架移動設(shè)備支持及頁面跳轉(zhuǎn)樣式定義相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04

最新評論

孟连| 塔河县| 海南省| 黄骅市| 德庆县| 神木县| 滨州市| 醴陵市| 东海县| 兴仁县| 博野县| 诸城市| 札达县| 宁化县| 黔西| 沙洋县| 封丘县| 平罗县| 环江| 伊通| 沧源| 普兰店市| 沾化县| 容城县| 贵港市| 顺平县| 封丘县| 当涂县| 雷波县| 永年县| 德惠市| 永仁县| 罗定市| 托克托县| 慈利县| 武山县| 历史| 桑植县| 景东| 岳池县| 神池县|