<?php
/*** modified by fuyong @ 2015-09-13
* 修復二分法查詢方法
* 漢字拼音首字母工具類
* 注: 英文的字串:不變返回(包括數字) eg .abc123 => abc123
* 中文字串:返回拼音首字元 eg. 測試字串 => cszfc
* 中英混合串: 返回拼音首字元和英文 eg. 我i我j => wiwj
* eg.
* $py = new pinyinfirstchar();
* $result = $py->getinitials('我想和你在一起');
* $result = $py->getfirstchar('小時候我就想和你在一起');
*///下面3行測試**
$py = new pinyinfirstchar();
$result = $py->getfirstchar('根據中文姓名');
print_r($result);
class
pinyinfirstchar
/*** 中文字串 substr
**@param string $str
*@param int $start
*@param int $len
*@return string
*/private
function
_msubstr
($str, $start, $len)
if ( ord(substr($str, $i, 1)) > 129 ) $i++;
}return
$result;
}/**
* 字串切分為陣列 (漢字或者乙個字元為單位)
**@param string $str
*@return array
*/private
function
_cutword
( $str )
else
}return
$words;
}/**
* 判斷字元是否是ascii字元
**@param string $char
*@return bool
*/private
function
_isascii
( $char )
/*** 判斷字串前3個字元是否是ascii字元
**@param string $str
*@return bool
*/private
function
_isasciis
( $str )
$result = array_count_values( $chars );
if ( empty($result['no']) )
return
false;
}/**
* 獲取中文字串的拼音首字元
**@param string $str
*@return string
*/public
function
getinitials
( $str )
$result = array();
if ( $this->_charset == 'utf-8' )
$words = $this->_cutword( $str );
foreach ( $words
as$word )
$code = ord( substr($word,0,1) ) * 1000 + ord( substr($word,1,1) );
/*獲取拼音首字母a--z*/
if ( ($i = $this->_search($code)) != -1 )
}return strtoupper(implode('',$result));
}private
function
_getchar
( $ascii )
elseif ( $ascii>=65 && $ascii
<=90 )elseif ($ascii>=97 && $ascii
<=122)else
}/**
* 查詢需要的漢字內碼(gb2312) 對應的拼音字元( 二分法 )
**@param int $code
*@return int
*/private
function
_search
( $code )
$tmp = (int) round(($lower + $upper) / 2);
if ( !isset($data[$tmp]) )else
if ( $data[$middle] < $code )else
if ( $data[$middle] == $code ) else}}
/*** 獲取一整串中文字串的拼音首字元(只返回1個字元)
**@param string $str
*@return string
*/public
function
getfirstchar
( $str )
}?>
FLEX 中英文姓名校驗器 VALIDATOR
為我那個無聊的緣分測試程式所寫的中英文名字校驗器,希望對大家能有作用 package com.love static public function isasciiletter n number boolean static public function ischinesecharacter n ...
中英文本元混合處理方法
1,txt檔案匯入sql時 303410001401?600 lang 4 t粵ig?0220?011840628900000?bpo 303410001501?600 landau中er?0220?011840628900000?bpo 303410001601?600 lang 6 t漢ig?0...
只針對中英文混合分詞的中文分詞器
該版本說明 1 只針對中英文混合分詞 需要一些中文和英文連在一起 設定如下 utility.seperatop e 1234567890公升級到 例子 worker work new worker utility.seperatop e 1234567890公升級到年月號m string resul...