函数strtrlz是否知道mediawiki的中文繁简转换功能?
用的就是这个函数,比较适合你这种情况,不妨看看它的代码。如果是标准字符转换,前面的帖子已经作了说明
http://topic.csdn.net/u/20081118/18/c1bac1bd-c4b9-4a94-8244-228ee601b984.html?seed=1531169566
用的就是这个函数,比较适合你这种情况,不妨看看它的代码。如果是标准字符转换,前面的帖子已经作了说明
http://topic.csdn.net/u/20081118/18/c1bac1bd-c4b9-4a94-8244-228ee601b984.html?seed=1531169566
第二个,如果是混合的,秘须先用正则提取二字节16制码,一个一个生成字符混取好象是不可能的!
生成一个php里面的数组,如$array = new Array("8F66"=>'车',...);
最好是生成多个数组,像字典那样可以检索
//获取其字符的内部数组表示,所以本文件应用utf-8编码!
if (is_array( $word))
$arr = $word;
else
$arr = preg_split('//', $word, -1, PREG_SPLIT_NO_EMPTY);
//此时,$arr应类似array(228, 189, 160)
//定义一个空字符串存储
$bin_str = '';
//转成数字再转成二进制字符串,最后联合起来。
foreach ($arr as $value)
$bin_str .= decbin(ord($value));
//此时,$bin_str应类似111001001011110110100000,如果是汉字"你"
//正则截取
$bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);
//此时, $bin_str应类似0100111101100000,如果是汉字"你"
//return bindec($bin_str); //返回类似20320,汉字"你"
return dechex(bindec($bin_str)); //如想返回十六进制4f60,用这句
}
echo '<br />';$v='你';
echo getUnicodeFromOneUTF8($v); //得到unicode码4f60
你这是一个典型的Unicode<=>Ascii互换问题。
按照下面的代码,用strtr就可以简单的做到。
但是,需要做两个互换字符的数组。
已经存在县有数据的情况下,写个小程序,自动生成互换数组的代码不成问题。$data= array(
'\u30c6'=>'全',
'\u30c7'=>'字');
var_dump(strtr('\u30c6中文\u30c7', $data));
注意:
1.不要轻易用正则
2.PHP对单个字符操作的API很少,尽可能用整体转换的函数
但直接输出'\u30c6',不行我记不清了\u30c6哪种编码了,unicode码还是utf-8,还是html的内码?
,下面的这个就不行,不知为什么?$v=iconv("ISO-8859-1", "UTF-8", "你");echo getUnicodeFromOneUTF8($v); //得到unicode码4f60
不是不能输出,而是你显示不了。
lz要的功能感觉像java中native2ascii实现的功能,
而不是普通的在HTML中所显示的编码转换问题。