Пример #1
0
 public function big5ToUTF8($word)
 {
     if (is_null(self::$_maps)) {
         $fp = fopen(__DIR__ . '/big5uni.txt', 'r');
         self::$_maps = array();
         while (false !== ($line = fgets($fp))) {
             if (0 === strpos($line, '#')) {
                 continue;
             }
             list($big5, $utf8) = explode(' ', trim($line), 2);
             $utf8_word = html_entity_decode("&#" . hexdec($utf8) . ";");
             self::$_maps[hexdec($big5) / 256][hexdec($big5) % 256] = $utf8_word;
         }
         fclose($fp);
     }
     $chars = unpack('C2', $word);
     return self::$_maps[$chars[1]][$chars[2]];
 }
Пример #2
0
 public function searchByKeyword($word)
 {
     $params = array();
     $params['method'] = 'query';
     $params['otherEnterFlag'] = 'false';
     $params['useEUC'] = 'N';
     $params['isShowEUC'] = 'Y';
     $params['queryKey'] = 'sed4871';
     $params['selCmpyType'] = 1;
     $params['selQueryType'] = 1;
     $params['queryStr'] = iconv('utf-8', 'big5', $word);
     $params['brBanNo'] = '';
     $params['imageCode'] = 'jretd';
     $params['imageFileName'] = 'oxQ22Z.jpg';
     $tmpfile = tempnam('', '');
     $url = 'http://gcis.nat.gov.tw/pub/cmpy/cmpyInfoListAction.do';
     $curl = curl_init();
     if (getenv('PROXY_URL')) {
         curl_setopt($curl, CURLOPT_PROXY, getenv('PROXY_URL'));
     }
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
     curl_setopt($curl, CURLOPT_REFERER, $url);
     curl_setopt($curl, CURLOPT_COOKIEFILE, $tmpfile);
     curl_setopt($curl, CURLOPT_POST, true);
     curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
     curl_setopt($curl, CURLOPT_URL, $url);
     $content = curl_exec($curl);
     $content = Big52003::iconv($content);
     preg_match_all('#banNo=([0-9]{8})#', $content, $matches);
     $ids = $matches[1];
     preg_match('#([0-9]*) 頁 #', $content, $matches);
     $total = intval($matches[1]);
     for ($i = 2; $i <= $total; $i++) {
         sleep(1);
         curl_setopt($curl, CURLOPT_COOKIEFILE, $tmpfile);
         curl_setopt($curl, CURLOPT_URL, $url);
         curl_setopt($curl, CURLOPT_REFERER, 'http://gcis.nat.gov.tw/pub/cmpy/branInfoListAction.do');
         curl_setopt($curl, CURLOPT_POST, true);
         curl_setopt($curl, CURLOPT_POSTFIELDS, 'isShowEUC=Y&otherEnterFlag=false&queryKey=sed4871&useEUC=N&method=goPage&goPage=' . $i);
         $content = curl_exec($curl);
         $content = Big52003::iconv($content);
         preg_match_all('#banNo=([0-9]{8})#', $content, $matches);
         $ids = array_merge($ids, $matches[1]);
     }
     unlink($tmpfile);
     return array_values(array_unique($ids));
 }