linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > php >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·PHP生成静态页面的一些经验
·PHP无限分类与树型论坛的实现方
·php5学习笔记
·入门级PHP程序员面试题
·PHP 和 MySQL初学入门
·PHP入门速成
·vim的代码折叠
·文件下载统计php编程代码
·如何建立自己的新闻发布系统
·织梦CMS中文转换拼音函数研究
·Windows下Apache+Tomcat+MySQL
·PHP初学者头疼问题总结
·Cookie及其使用详细介绍
·生成sessionid和随机密码的例子
·使用无限生命期Session的方法
最新文章
·PHP入门速成
·用php实现广告轮播
·Zend Optimizer 问题浅析
·功能强大的CGI语言----PHP3
·用Session对Web页面进行保护
·PHP--进行模块化设计
·如何将PHP的结果输出到非PHP页
·如何开发一个虚拟域名系统
·PHP4调用自己编写的COM组件
·简单的页面缓冲技术(三)
·简单的页面缓冲技术(二)
·简单的页面缓冲技术(一)
·用Socket发送电子邮件(二)
·用Socket发送电子邮件(一)
·PHP/MySQL 购物车
Google
 
织梦CMS中文转换拼音函数研究
[ 作者:  加入时间:2007-11-21 15:28:56  来自:Linux联盟收集整理 ]
 织梦中添加分类时填写中文分类名可以自动转换成对应的拼音,该函数位于include/inc/inc_fun_funAdmin.php 第4行到32行.织梦版本为3.1.该函数转换需要的中文拼音数据库位于include/data/pinyin.db. DRpLinux联盟
  详细分析请看代码注释,如有地方分析的不对请高人指点! 1 function SpGetPinyin( $str , $ishead = 0 , $isclose = 1 ) DRpLinux联盟
   2 { DRpLinux联盟
   3 // 全部数组$pinyins DRpLinux联盟
   4 global $pinyins ; DRpLinux联盟
   5 $restr = "" ; // 初始化返回字符串变量 DRpLinux联盟
   6 $str = trim ( $str ); // 去空格 DRpLinux联盟
   7 $slen = strlen ( $str ); // 得到字符串长度 DRpLinux联盟
   8 if ( $slen < 2 ) return $str ; // 如果小于2则返回 DRpLinux联盟
   9 if ( count ( $pinyins ) == 0 ) // 如果全局数组$pingyins长度为0 DRpLinux联盟
  10 { DRpLinux联盟
  11 $fp = fopen ( dirname ( __FILE__ ) . " /../data/pinyin.db " , " r " ); // 读取pinyin数据库 DRpLinux联盟
  12 while ( ! feof ( $fp )) // 循环至文件结束位置 DRpLinux联盟
  13 { DRpLinux联盟
  14 $line = trim ( fgets ( $fp )); // 从文件指针中读取一行并去除空格 DRpLinux联盟
  15 //$line[0].$line[1]中文字,作为数组索引 DRpLinux联盟
  16 //substr($line,3,strlen($line)-3)得到该字对应的拼音 DRpLinux联盟
  17 $pinyins [ $line [ 0 ] . $line [ 1 ]] = substr ( $line , 3 , strlen ( $line ) - 3 ); DRpLinux联盟
  18 } DRpLinux联盟
  19 fclose ( $fp ); DRpLinux联盟
  20 } DRpLinux联盟
  21 for ( $i = 0 ; $i < $slen ; $i ++ ) DRpLinux联盟
  22 { DRpLinux联盟
  23 if ( ord ( $str [ $i ]) > 0x80 ) // 如果第i的字符的ASCII编码大于0x80(确认为中文字) DRpLinux联盟
  24 { DRpLinux联盟
  25 DRpLinux联盟
  26 $c = $str [ $i ] . $str [ $i + 1 ]; // 拼接字符编码 DRpLinux联盟
  27 $i ++ ; DRpLinux联盟
  28 if ( isset ( $pinyins [ $c ])) // 如果$pinyin数组中含有该索引 DRpLinux联盟
  29 { DRpLinux联盟
  30 // $ishead == 0 取全部拼音 DRpLinux联盟
  31 if ( $ishead == 0 ) $restr .= $pinyins [ $c ]; DRpLinux联盟
  32 // 只取拼音第一个字母 DRpLinux联盟
  33 else $restr .= $pinyins [ $c ][ 0 ]; DRpLinux联盟
  34 } else $restr .= " _ " ; // 如果没有索引则使用_替代 DRpLinux联盟
  35 } DRpLinux联盟
  36 else if ( eregi ( " [a-z0-9] " , $str [ $i ]) ) // 如果不是中文字是字母和数字 DRpLinux联盟
  37 { DRpLinux联盟
  38 $restr .= $str [ $i ]; // 直接连接字符串 DRpLinux联盟
  39 } DRpLinux联盟
  40 else // 如果都不是 DRpLinux联盟
  41 { DRpLinux联盟
  42 $restr .= " _ " ; // 使用_替代 DRpLinux联盟
  43 } DRpLinux联盟
  44 } DRpLinux联盟
  45 // 根据参数注销$pinyins DRpLinux联盟
  46 if ( $isclose == 0 ) unset ( $pinyins ); DRpLinux联盟
  47 // 返回转换好的拼音 DRpLinux联盟
  48 return $restr ; DRpLinux联盟
  49 } Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·企业建站好帮手 PHPCMS快速入门  (2007-05-23 22:33:45)
 ·如何定制和构建基于开源框架的CMS  (2006-10-10 10:58:10)