【收藏】php生成中文汉字首拼音实用类(1)_第1页
【收藏】php生成中文汉字首拼音实用类(1)_第2页
【收藏】php生成中文汉字首拼音实用类(1)_第3页
【收藏】php生成中文汉字首拼音实用类(1)_第4页
【收藏】php生成中文汉字首拼音实用类(1)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在实际项目中,我们可能要用到把汉字生成拼音存到数据库中,比如新闻标题 生成拼音做url,或者把分类项取首拼保存方便查询,应用场景很多。我现在 做的项目是把城市分站生成首拼音做二级域名,现在是我正在用的类,分享给 大家。代码如下复制代码v?php/*汉字拼音首字母工具类* 注:英文的字串:不变返回(包括数字)* 中文字符串:返回拼音首字符* 中英混合串:返回拼音首字符和英文eg .abc123 => abc123eg.湖南=> HN eg.我 i 我 j => WIWJ*/eg.$py = new str2 PY();$result = $p y->get In itia

2、ls('周杰伦');/获取首字母$result = $p y->getFirstStri ng('abc'); $resutl = $p y->getFirstStri ng("/A一聚教程");/yclass str2 py P rivate $_pinyins = array( => 'A',=> 'B',=> C,=> 'D',=> 'E',=> 'F',=> 'G',=> '

3、;H',=> 'J',=> 'K',=> 'L',=> 'M',=> 'N',=> 'O',=> 卩',=> Q,=> 'R',=> 'S', => T,=> W,=> 'X',=> 'Y', => 'Z',);p rivate $_charset = n ull;/*构造函数,指定需要的编码default: utf

4、-8* 支持 utf-8, gb2312* p aram unknown_type $charset*/p ublic fun cti on _con struct($charset = 'utf-8') $this->_charset = $charset;/*中文字符串substr$start $len* p aram stri ng $str* p aram int* p aram int* return string*/p rivate fun cti on _msubstr($str, $start, $le n) $start = $start * 2;$le

5、 n = $le n * 2;$strle n = strle n($str);$result =''for ($i = 0; $i < $strle n; $i+) if ($i >= $start && $i < ($start + $le n) if (ord(substr($str, $i, 1) > 129) $result .= substr($str, $i, 2); else$result .= substr($str, $i, 1);if (ord(substr($str, $i, 1) > 129)$i+;ret

6、ur n $result;/*字符串切分为数组(汉字或者一个字符为单位)* p aram stri ng $str* return array*/p rivate fun cti on _cutWord($str) $words = arrayO; while ($str !="")if ($this->_isAscii($str) /*非中文*/$words = $str0;$str = substr($str, strle n($strO); else$word = $this->_msubstr($str, 0, 1);$words = $word;$st

7、r = substr($str, strle n($word);return $words;/*判断字符是否是ascii字符* p aram stri ng $char* retu rn bool*/p rivate fun cti on _isAscii($char)return ( ord(substr($char, 0, 1) < 160 );/*判断字符串前3个字符是否是ascii字符* p aram stri ng $str* retu rn bool*/p rivate fun cti on _isAsciis($str) "$len = strle n( $str

8、) >= 3 ? 3 : 2; $chars = array();for ($i = 1; $i < $len - 1; $i+)$chars = $this->_isAscii($str$i) ? 'yes':'no'$result = array_co un t_values($chars); if (emp ty($result' no')return true;return false;/*获取中文字串的拼音首字符* p aram stri ng $str* return string*/p ublic fun cti

9、on get In itials($str) if (emp ty($str)return ”;if ($this->_isAscii($strO) && $this->_isAsciis($str) return $str;$result = array();if ($this->_charset = 'utf-8') $str = ico nv('utf-8', 'gb2312', $str);$words = $this->_cutWord($str); foreach ($words as $wor

10、d)if ($this->_isAscii($word)/* 非中文*/$result = $word; con ti nue;$code = ord(substr($word, 0, 1) * 1000 +ord(substr($word, 1, 1);/*获取拼音首字母A-Z */if ($i = $this->_search($code) != -1) $result = $this->_pi nyi ns$i;return strto upp er(i mpl ode(”,$result);/*20140624 wa ngtia nbao 获取首字母 p aram s

11、tri ng $strreturn stri ng*/p ublic fun cti on getFirstStri ng($str) /先把中文转换成字母$n ew_stri ng = $this->getI nitials($str);if (emp ty($ new_stri ng) "return ”; elseretu rn strto upp er(substr($ new_stn ng, 0, 1);p rivate fun cti on _getChar($ascii) if ($ascii >= 48 && $ascii <= 57

12、) retur n chr($ascii);/* 数字*/elseif ($ascii >= 65 && $ascii <= 90)retur n chr($ascii);/* A-Z */elseif ($ascii >= 97 && $ascii <= 122)return chr($ascii - 32); /* a-z */ elsereturn '-' /*其他*/*查找需要的汉字内码(gb2312)对应的拼音字符(二分法)* p aram int $code* return int*/p rivate fun

13、cti on _search($code) $data = array_keys($this->_pi nyi ns);$lower = 0;$upper = sizeof($data) - 1;$middle = (i nt) ro un d($lower + $upper) / 2); if ($code < $data0)return -1;for (if ($lower > $upper) return $data$lower - 1;$tmp = (i nt) ro un d($lower + $upper) / 2); if (!isset($data$tm p)return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论