php-汉字拼音首字母工具类,php-汉字工具类 abc123* 中文字符串:返回拼音首字符 eg. 测试字符串 => cszfc* 中英混合串: 返回拼音首字符和英文 eg. 我i我j => wiwj* eg.* $py = new str2py();* * $result = $py->getinitials('周杰伦');** //获取首字母* $result = $py->getfirststring('abc'); //a* $resutl = $py->getfirststring(周杰伦); //z**/class str2py{ private $_pinyins = array( 176161 => 'a', 176197 => 'b', 178193 => 'c', 180238 => 'd', 182234 => 'e', 183162 => 'f', 184193 => 'g', 185254 => 'h', 187247 => 'j', 191166 => 'k', 192172 => 'l', 194232 => 'm', 196195 => 'n', 197182 => 'o', 197190 => 'p', 198218 => 'q', 200187 => 'r', 200246 => 's', 203250 => 't', 205218 => 'w', 206244 => 'x', 209185 => 'y', 212209 => 'z', ); private $_charset = null; /** * 构造函数, 指定需要的编码 default: utf-8 * 支持utf-8, gb2312 * * @param unknown_type $charset */ public function __construct($charset = 'utf-8') { $this->_charset = $charset; } /** * 中文字符串 substr * * @param string $str * @param int $start * @param int $len * @return string */ private function _msubstr($str, $start, $len) { $start = $start * 2; $len = $len * 2; $strlen = strlen($str); $result = ''; for ($i = 0; $i = $start && $i 129) { $result .= substr($str, $i, 2); } else { $result .= substr($str, $i, 1); } } if (ord(substr($str, $i, 1)) > 129) { $i++; } } return $result; } /** * 字符串切分为数组 (汉字或者一个字符为单位) * * @param string $str * @return array */ private function _cutword($str) { $words = array(); while ($str != ) { if ($this->_isascii($str)) {/* 非中文 */ $words[] = $str[0]; $str = substr($str, strlen($str[0])); } else { $word = $this->_msubstr($str, 0, 1); $words[] = $word; $str = substr($str, strlen($word)); } } return $words; } /** * 判断字符是否是ascii字符 * * @param string $char * @return bool */ private function _isascii($char) { return ( ord(substr($char, 0, 1)) = 3 ? 3 : 2; $chars = array(); for ($i = 1; $i _isascii($str[$i]) ? 'yes' : 'no'; } $result = array_count_values($chars); if (empty($result['no'])) { return true; } return false; } /** * 获取中文字串的拼音首字符 * * @param string $str * @return string */ public function getinitials($str) { if (empty($str)) return ''; if ($this->_isascii($str[0]) && $this->_isasciis($str)) { return $str; } $result = array(); if ($this->_charset == 'utf-8') { $str = iconv('utf-8', 'gb2312', $str); } $words = $this->_cutword($str); foreach ($words as $word) { if ($this->_isascii($word)) {/* 非中文 */ $result[] = $word; continue; } $code = ord(substr($word, 0, 1)) * 1000 + ord(substr($word, 1, 1)); /* 获取拼音首字母a--z */ if (($i = $this->_search($code)) != -1) { $result[] = $this->_pinyins[$i]; } } return strtoupper(implode('', $result)); } /** * 20140624 wangtianbao 获取首字母 * @param string $str * @return string */ public function getfirststring($str) { //先把中文转换成字母 $new_string = $this->getinitials($str); if (empty($new_string)) { return ''; } else { return strtoupper(substr($new_string, 0, 1)); } } private function _getchar($ascii) { if ($ascii >= 48 && $ascii = 65 && $ascii = 97 && $ascii _pinyins); $lower = 0; $upper = sizeof($data) - 1; $middle = (int) round(($lower + $upper) / 2); if ($code $upper) { return $data[$lower - 1]; } $tmp = (int) round(($lower + $upper) / 2); if (!isset($data[$tmp])) { return $data[$middle]; } else { $middle = $tmp; } if ($data[$middle] < $code) { $lower = (int) $middle + 1; } else if ($data[$middle] == $code) { return $data[$middle]; } else { $upper = (int) $middle - 1; } } }}
http://www.bkjia.com/phpjc/925549.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/925549.htmltecharticlephp-汉字拼音首字母工具类,php-汉字工具类 ? php /* ** 汉字拼音首字母工具类* 注: 英文的字串:不变返回(包括数字) eg .abc123 = abc123* 中文字...