ITPub博客

首页 > IT职业 > IT图书 > php查词采集器

php查词采集器

IT图书 作者:ciscoeden 时间:2021-09-09 09:36:15 0 删除 编辑

     header("content-type:text/html;charset=utf8"); class Dict{       private $word;           //显示的条数     private static $num = 10;       public function __construct(){}                    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,     //音标                 "pro"    => $pro,            //发音                 "example"=> $example,        //例句                 "explain"=> $explain,        //简明释义                 "synonym"=> $synonym,        //同反义词                 "phrase" => $phrase      //短语数组             );         return $result;     }              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;     }              private function Pronounced(){         $data = $this -> getContent();         preg_match_all("/"EN-US">(.*)/Ui",$data,$pronounced);         return array(             'en' => $pronounced[1][0],             'us' => $pronounced[1][1]         );     }            private function getSay(){         $data = $this -> getContent();         preg_match_all("/url="(.*)"/Ui",$data,$pronounced);         return array(             'en' => $pronounced[1][0],             'us' => $pronounced[1][1]         );       }            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;     }            private function getExplain(){         $data = $this -> getContent();         preg_match_all("/id="en-simple-means">(.*)

/Us",$data,$explain);         $r_data = $explain[1][0];         preg_match_all("/

(?P.*)(?P.*)

/Us", $r_data, $a_data);         preg_match_all("/(?P[^>]+):(?P.*)/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;     }              private function getSynonym(){         $data = $this -> getContent();         preg_match_all("/id="en-syn-ant">(.*)
/Us",$data,$synonym);         $content = $synonym[1][0];         $data1 = explode("", $content);         $result = array();         $data2 = array();         foreach ($data1 as $key => $value) {             preg_match_all("/(?P.*) ;
    (?.*)
/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("/
  • (?P

    .*)(?P<value>.*)</value>
  • /Us", $v, $v_data);                     foreach ($v_data['title'] as $m => $d) {                         $data = strip_tags(preg_replace(">"," ", $v_data["value"][$m]));                         $result[$key][$value["adj"][$k]][$d] = $data;                     }                 }             }         }         return $result;     }            private function getPhrase(){         $num = self::$num;         $data = $this -> getContent();         preg_match_all("/id="en-phrase">(.*)
    /Us",$data,$phrase);         $data = explode("",$phrase[1][0]);         $data1 = array_slice($data,0,$num);         $result = array();         foreach ($data1 as $key => $value) {             $data2 = explode("", $value);             $n = count($data2);             if($n $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;     }          private function array2string($data, $isformdata = 1) {       if($data == '') return '';       if($isformdata) $data = $this->new_stripslashes($data);       return addslashes(var_export($data, TRUE));     }          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();

    来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4346/viewspace-2810927/ ,如需转载,请注明出处,否则将追究法律责任。

    请登录后发表评论 登录
    全部评论

    注册时间:2019-08-12

    • 博文量
      79
    • 访问量
      637