您好,欢迎访问一九零五行业门户网

Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的_PHP

wordpress
nextgen gallery是wordpress中著名的相册插件,遗憾的是不支持中文等unicode字符,本文将介绍如何将目录转换为拼音(添加图集时)。
以nextgen 1.6.2为例:
“新增图集/图片”的路径是:admin.php?page=nggallery-add-gallery,我们在nextgen-gallery/admin/admin.php中查找“nggallery-add-gallery”,
复制代码 代码如下:
switch ($_get['page']){
case nggallery-add-gallery :
include_once ( dirname (__file__) . '/functions.php' ); // admin functions
include_once ( dirname (__file__) . '/addgallery.php' ); // nggallery_admin_add_gallery
$ngg->addgallery_page = new nggaddgallery ();
$ngg->addgallery_page->controller();
break;
类nggaddgallery在addgallery.php中,鼠标悬停在”新增图集“tab上时从浏览器的状态栏可以看到url是 admin.php?page=nggallery-add-gallery#addgallery , 在addgallery.php中查找addgallery看到其调用了:
nggadmin::create_gallery($newgallery, $defaultpath);
nggadmin类位于functions.php中,create_gallery函数修改如下:(红色粗体是新增加的行)
复制代码 代码如下:
require_once('cn2pinyin.php');
/**
* nggadmin - class for admin operation
*
* @package nextgen gallery
* @author alex rabe
* @copyright 2007-2010
* @access public
*/
class nggadmin{
/**
* create a new gallery & folder
*
* 添加中文支持 by:elf sundae
*
* @class nggadmin
* @param string $gallerytitle
* @param string $defaultpath
* @param bool $output if the function should show an error messsage or not
* @return
*/
function create_gallery($gallerytitle, $defaultpath, $output = true) {
global $wpdb, $user_id;
// get the current user id
get_currentuserinfo();
//cleanup pathname
$galleryname = sanitize_file_name( $gallerytitle );
// 中文转换为拼音
$galleryname = cn2pinyin($galleryname,1);
$galleryname = apply_filters('ngg_gallery_name', $galleryname);
$nggpath = $defaultpath . $galleryname;
$nggroot = winabspath . $defaultpath;
$txt = '';
其中cn2pinyin是汉字转换为拼音的函数,位于cn2pinyin.php(新建此文件)中。
cn2pinyin.php
复制代码 代码如下:
= '5.0') ? array_combine($_tdatakey, $_tdatavalue) : _array_combine($_tdatakey, $_tdatavalue);
arsort($_data);
reset($_data);
if ($_code != 'gb2312')
$_string = _u2_utf8_gb($_string);
$_res = '';
for ($i = 0; $i $_p = ord(substr($_string, $i, 1));
if ($_p > 160) {
$_q = ord(substr($_string, ++$i, 1));
$_p = $_p * 256 + $_q - 65536;
}
$_res .= _pinyin($_p, $_data);
}
return preg_replace(/[^a-z0-9]*/, '', $_res);
}
function _pinyin($_num, $_data) {
if ($_num > 0 && $_num return chr($_num);
elseif ($_num -10247)
return '';
else {
foreach ($_data as $k => $v) {
if ($v break;
}
return $k;
}
}
function _u2_utf8_gb($_c) {
$_string = '';
if ($_c $_string .= $_c;
elseif ($_c $_string .= chr(0xc0 | $_c >> 6);
$_string .= chr(0x80 | $_c & 0x3f);
} elseif ($_c $_string .= chr(0xe0 | $_c >> 12);
$_string .= chr(0x80 | $_c >> 6 & 0x3f);
$_string .= chr(0x80 | $_c & 0x3f);
} elseif ($_c $_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);
}
function _array_combine($_arr1, $_arr2) {
for ($i = 0; $i $_res[$_arr1[$i]] = $_arr2[$i];
return $_res;
}
//用法:
//第二个参数留空则为gb1232编码
//echo cn2pinyin('中文测试');
//第二个参数随意设置则为utf-8编码
//echo cn2pinyin('中文测试',1);
?>
download cn2pinyin.php at: http://xiazai.bitscn.com/201012/yuanma/cn2pinyin.rar
另外,修改“新增图集”中的名称支持字符提示:
addgallery.php 中,line:304
复制代码 代码如下:
function tab_addgallery() {
?>
/// ....
defaultpath ?>
(图集名称支持以下字符:中文、a-z、a-z、0-9、-、_ ,中文将自动转换为拼音)
//...
其它类似信息

推荐信息