='5.0')?array_combine($_tdatakey,$_tdatavalue):$this->_array_combine($_tdatakey,$_tdatavalue); arsort($_data); reset($_data); if($_code != 'gb2312') $_string = $this->_u2_utf8_gb($_string); $_res = ''; for($i=0; $i160) { $_q = ord(substr($_string, ++$i, 1)); $_p = $_p*256 + $_q - 65536; } $_res .= $this->_pinyin($_p, $_data); } return preg_replace("/[^a-z0-9]*/", '', $_res); } public function _pinyin($_num, $_data){ if($_num>0 && $_num<160) return chr($_num); elseif($_num<-20319 || $_num>-10247) return ''; else{ foreach($_data as $k=>$v){ if($v<=$_num) break; } return $k; } } public function _u2_utf8_gb($_c){ $_string = ''; if($_c < 0x80) $_string .= $_c; elseif($_c < 0x800){ $_string .= chr(0xC0 | $_c>>6); $_string .= chr(0x80 | $_c & 0x3F); }elseif($_c < 0x10000){ $_string .= chr(0xE0 | $_c>>12); $_string .= chr(0x80 | $_c>>6 & 0x3F); $_string .= chr(0x80 | $_c & 0x3F); } elseif($_c < 0x200000) { $_string .= chr(0xF0 | $_c>>18); $_string .= chr(0x80 | $_c>>12 & 0x3F); $_string .= chr(0x80 | $_c>>6 & 0x3F); $_string .= chr(0x80 | $_c & 0x3F); } return iconv('UTF-8','GB2312',$_string); } public function _array_combine($_arr1,$_arr2){ for($i=0; $i