首先要做的是让php6支持Unicode,//将utf8编码的汉字转换为unicode
分类:热门资源

自家刚巧安装了PHP6 DEV版本,决定测量检验一下PHP6的新特征-PHP的Unicode辅助。作者并不曾计划讲PHP6的新特性只怕是Unicode,上边仅仅是自己做的有关Unicode的测量检验。

汉字调换来unicode方法

第一要做的是让php6援救Unicode,在php.ini文件中改正。

 代码如下

;;;;;;;;;;;;;;;;;;;;; Unicode settings ;;;;;;;;;;;;;;;;;;;;;unicode.semantics = onunicode.runtime_encoding = utf-8unicode.script_encoding = utf-8unicode.output_encoding = utf-8unicode.from_error_mode = U_INVALID_SUBSTITUTEunicode.from_error_subst_char = 3f由于自家利用的是Republika Hrvatska语和德语有所区别,有局地字符要求管理。所以,笔者先是次试验的目标是核查strlen作用的Unicode

<?php
//将utf8编码的汉字调换为unicode
function htou($c){
 $n = (ord($c[0]) & 0x1f) << 12;
 $n = (ord($c[1]) & 0x3f) << 6;
 $n = ord($c[2]) & 0x3f;
 return $n;
}

$word = tre;echo Length: .strlen($word);

//在代码中隐蔽utf8格式的字符串
function my_utf8_unicode($str) {
 $encode='';
 for($i=0;$i<strlen($str);$i ){
  if(ord(substr($str,$i,1))> 0xa0){
   $encode.='&#'.htou(substr($str,$i,3)).';';
   $i =2;
  }else{
   $encode.='&#'.ord($str[$i]).';';
  }
 }
 return $encode;
}

结果是: Length: 4 。结果十三分的不错 但它只是是个开端! : )

echo my_utf8_unicode("哈哈ABC");
?>

本身的第1个测量检验指标是与PHP6新的SPL中的TextIterator textiterator$word = tre;foreach (new TextIterator($word, TextIterator::CHARACTEHaval卡塔尔 as $character卡塔尔(قطر‎ {? var_inspect($character);}

汉字转换到unicode方法二

出口: unicode(1卡塔尔国 { 00ea } unicode(1卡塔尔 t { 0074 } unicode(1State of Qatar r { 0072 } unicode(1卡塔尔 e { 0065 }降解单词,获得了好多的假名和字母的新闻

 代码如下

TextIterator::CHARACTE昂科拉的操作看上去格外的强盛啊,不过TextIterator::WO福特ExplorerD越来越强盛

function getUnicode($word)
{
 // 转UTF8
 $word0 = iconv('gbk', 'utf-8', $word);
 $word1 = iconv('utf-8', 'gbk', $word0);
 $word =  ($word1 == $word) ? $word0 : $word;
 // 拆分汉字
 preg_match_all('#(?:[x00-x7F]|[xC0-xFF][x80-xBF]+)#s', $word, $array, PREG_PATTERN_ORDER);
 $return  = array();
 // 转换
 foreach ($array[0] as $cc)
 {
  $arr = str_split($cc);
  $bin_str = '';
  foreach ($arr as $value)
  {
   $bin_str .= decbin(ord($value));
  }
  $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);
  $return[] = '&#' . bindec($bin_str) . ';';
 }
 
 return implode('', $return);
}

$sentences = Bonjour, nous sommes Franais ! Ae :);foreach (new TextIterator($sentences, TextIterator::WORD) as $word) { var_inspect($word);}

函数用法:

获取的结果: unicode(7State of Qatar Bonjour { 0042 006f 006e 006a 006f 0075 0072 } unicode(1卡塔尔 , { 002c } unicode(1State of Qatar { 0020 } unicode(4卡塔尔 nous { 006e 006f 0075 0073 } unicode(1卡塔尔(قطر‎ { 0020 } unicode(6卡塔尔(قطر‎ sommes { 0073 006f 006d 006d 0065 0073 } unicode(1卡塔尔(قطر‎ { 0020 } unicode(8卡塔尔国 Franais { 0046 0072 0061 006e 00e7 0061 0069 0073 } unicode(1卡塔尔 { 0020 }

 代码如下

$word = '一个汉字转变到Unicode四字节编码的PHP函数。';
echo getUnicode($word);

上述将出口如下结果:

一个汉字转换成Un
icode四字节编
码的PHP函数。

这一组函数能够将汉字转成unicode编码,也能够将unicode解码成汉字。
将汉字转成Unicode的函数:

 代码如下

function uni_encode ($word)
{
 $word0 = iconv('gbk', 'utf-8', $word);
 $word1 = iconv('utf-8', 'gbk', $word0);
 $word =  ($word1 == $word) ? $word0 : $word;
    $word = json_encode($word);
    $word = preg_replace_callback('/\u(w{4})/', create_function('$hex', 'return '&#'.hexdec($hex[1]).';';'), substr($word, 1, strlen($word)-2));
    return $word;
}

对Unicode编码举行解码的函数:

 代码如下

威尼斯正规官网,function uni_decode ($uncode)
{
    $word = json_decode(preg_replace_callback('/&#(d{5});/', create_function('$dec', 'return 'u'.dechex($dec[1]);'), '"'.$uncode.'"'));
    return $word;
}

本文由威尼斯在线注册平台发布于热门资源,转载请注明出处:首先要做的是让php6支持Unicode,//将utf8编码的汉字转换为unicode

上一篇:这一款是dedecms的生成页面时的分页程序代码,阅读全文功能其实在很多的流行站点都有的 下一篇:没有了
猜你喜欢
热门排行
精彩图文