X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FZhClient.php;h=7f2c5cbfda6f8a0f0a86c8bc8a57dcc3844c2205;hb=72f3df40d2ed32e8d7af94b958210aa57b1152d1;hp=b2869e9fbc88f465f0dfa356d9799e5ab818906d;hpb=7b5b13b7950af9eec2221f550c3e559c9087e740;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ZhClient.php b/includes/ZhClient.php index b2869e9fbc..7f2c5cbfda 100644 --- a/includes/ZhClient.php +++ b/includes/ZhClient.php @@ -1,11 +1,11 @@ mFP = fsockopen($this->mHost, $this->mPort, $errno, $errstr, 30); wfRestoreWarnings(); if(!$this->mFP) { @@ -94,28 +95,29 @@ class ZhClient { } /** - * Convert the input to all possible variants + * Convert the input to all possible variants * * @param string $text input text * @return array langcode => converted_string * @access public - */ + */ function convertToAllVariants($text) { $len = strlen($text); $q = "CONV ALL $len\n$text"; $result = $this->query($q); if(!$result) return false; - list($infoline, $data) = explode('|', $result); + list($infoline, $data) = explode('|', $result, 2); $info = explode(";", $infoline); $ret = array(); $i=0; - foreach($info as $code => $len) { + foreach($info as $variant) { + list($code, $len) = explode(' ', $variant); $ret[strtolower($code)] = substr($data, $i, $len); - $i+=$len+1; + $i+=$len; } return $ret; - } + } /** * Perform word segmentation * @@ -142,136 +144,3 @@ class ZhClient { fclose($this->mFP); } } - - -class ZhClientFake { - - function ZhClientFake() { - global $wgMemc, $wgDBname; - $this->zh2TW = $wgMemc->get($key1 = "$wgDBname:zhConvert:tw"); - $this->zh2CN = $wgMemc->get($key2 = "$wgDBname:zhConvert:cn"); - $this->zh2SG = $wgMemc->get($key3 = "$wgDBname:zhConvert:sg"); - $this->zh2HK = $wgMemc->get($key4 = "$wgDBname:zhConvert:hk"); - if(empty($this->zh2TW) || empty($this->zh2CN) || empty($this->zh2SG) || empty($this->zh2HK)) { - require_once("includes/ZhConversion.php"); - $this->zh2TW = $zh2TW; - $this->zh2CN = $zh2CN; - $this->zh2HK = $zh2HK; - $this->zh2SG = $zh2SG; - $wgMemc->set($key1, $this->zh2TW); - $wgMemc->set($key2, $this->zh2CN); - $wgMemc->set($key3, $this->zh2SG); - $wgMemc->set($key4, $this->zh2HK); - } - } - - function isconnected() { - return true; - } - - /** - * Convert to zh-tw - * - * @access private - */ - function zh2tw($text) { - return strtr($text, $this->zh2TW); - } - - /** - * Convert to zh-cn - * - * @access private - */ - function zh2cn($text) { - return strtr($text, $this->zh2CN); - } - - /** - * Convert to zh-sg - * - * @access private - */ - function zh2sg($text) { - return strtr(strtr($text, $this->zh2CN), $this->zh2SG); - } - - /** - * Convert to zh-hk - * - * @access private - */ - function zh2hk($text) { - return strtr(strtr($text, $this->zh2TW), $this->zh2HK); - } - - /** - * Convert the input to a different language variant - * - * @param string $text input text - * @param string $tolang language variant - * @return string the converted text - * @access public - */ - function convert($text, $tolang) { - $t = ''; - switch($tolang) { - case 'zh-cn': - $t = $this->zh2cn($text); - break; - case 'zh-tw': - $t = $this->zh2tw($text); - break; - case 'zh-sg': - $t = $this->zh2sg($text); - break; - case 'zh-hk': - $t = $this->zh2hk($text); - break; - default: - $t = $text; - } - return $t; - } - - function convertToAllVariants($text) { - $ret = array(); - $ret['zh-cn'] = $this->zh2cn($text); - $ret['zh-tw'] = $this->zh2tw($text); - $ret['zh-sg'] = $this->zh2sg($text); - $ret['zh-hk'] = $this->zh2hk($text); - return $ret; - } - - /** - * Perform "fake" word segmentation, i.e. treating each character as a word - * - * @param string $text input text - * @return string segmented text - * @access public - */ - function segment($text) { - /* copied from LanguageZh_cn.stripForSearch() */ - if( function_exists( 'mb_strtolower' ) ) { - return preg_replace( - "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "' U8' . bin2hex( \"$1\" )", - mb_strtolower( $text ) ); - } else { - global $wikiLowerChars; - return preg_replace( - "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "' U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )", - $text ); - } - } - - /** - * Close the fake connection - * - * @access public - */ - function close() { } -} - -?> \ No newline at end of file