VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP中GBK和UTF8编码处理(中文,韩文)

一、编码范围

1.gbk (gb2312/gb18030)

x00-xff gbk双字节编码范围

x20-x7f ascii

xa1-xff 中文

x80-xff 中文

2.utf-8 (unicode)

u4e00-u9fa5 (中文)

x3130-x318f (韩文)

xac00-xd7a3 (韩文)

u0800-u4e00 (日文)

ps: 韩文是大于[u9fa5]的字符

正则例子:

preg_replace("/([x80-xff])/","",$str);

preg_replace("/([u4e00-u9fa5])/","",$str);

二、代码例子

  1. //判断内容里有没有中文-gbk (php教程) 
  2. function check_is_chinese($s){ 
  3.     return preg_match('/[x80-xff]./'$s); 
  4. //获取字符串长度-gbk (php) 
  5. function gb_strlen($str){ 
  6.     $count = 0; 
  7.     for($i=0; $i<strlen($str); $i++){ 
  8.         $s = substr($str$i, 1); 
  9.         if (preg_match("/[x80-xff]/"$s)) ++$i
  10.         ++$count
  11.     } 
  12.     return $count
  13. //截取字符串字串-gbk (php) 
  14. function gb_substr($str$len){ 
  15.     $count = 0; 
  16.     for($i=0; $i<strlen($str); $i++){ 
  17.         if($count == $lenbreak
  18.         if(preg_match("/[x80-xff]/"substr($str$i, 1))) ++$i
  19.         ++$count;        
  20.     } 
  21.     return substr($str, 0, $i); 
  22. //统计字符串长度-utf8 (php) 
  23. function utf8_strlen($str) { 
  24.     $count = 0; 
  25.     for($i = 0; $i < strlen($str); $i++){ 
  26.         $value = ord($str[$i]); 
  27.         if($value > 127) { 
  28.             $count++; 
  29.             if($value >= 192 && $value <= 223) $i++; 
  30.             elseif($value >= 224 && $value <= 239) $i = $i + 2; 
  31.             elseif($value >= 240 && $value <= 247) $i = $i + 3; 
  32.             else die('not a utf-8 compatible string'); 
  33.         } 
  34.         $count++; 
  35.     } 
  36.     return $count
  37.  
  38. //截取字符串-utf8(php) 
  39. function utf8_substr($str,$position,$length){ 
  40.     $start_position = strlen($str); 
  41.     $start_byte = 0; 
  42.     $end_position = strlen($str); 
  43.     $count = 0; 
  44.     for($i = 0; $i < strlen($str); $i++){ 
  45.         if($count >= $position && $start_position > $i){ 
  46.             $start_position = $i
  47.             $start_byte = $count
  48.         } 
  49.         if(($count-$start_byte)>=$length) { 
  50.             $end_position = $i
  51.             break
  52.         }    
  53.         $value = ord($str[$i]); 
  54.         if($value > 127){ 
  55.             $count++; 
  56.             if($value >= 192 && $value <= 223) $i++; 
  57.             elseif($value >= 224 && $value <= 239) $i = $i + 2; 
  58.             elseif($value >= 240 && $value <= 247) $i = $i + 3; 
  59.             else die('not a utf-8 compatible string'); 
  60.         } 
  61.         $count++; 
  62.     } 
  63.     return(substr($str,$start_position,$end_position-$start_position)); 
  64.  
  65. //字符串长度统计-utf8 [中文3个字节,俄文、韩文占2个字节,字母占1个字节] (ruby) 
  66. def utf8_string_length(str) 
  67.     temp = cgi::unescape(str) 
  68.     i = 0; 
  69.     j = 0; 
  70.     temp.length.times{|t| 
  71.         if temp[t] < 127 
  72.             i += 1 
  73.         elseif temp[t] >= 127 and temp[t] < 224 
  74.             j += 1 
  75.             if 0 == (j % 2) 
  76.                 i += 2 
  77.                 j = 0 
  78.             end 
  79.         else 
  80.             j += 1 
  81.             if 0 == (j % 3) 
  82.                 i +=2 
  83.                 j = 0 
  84.             end 
  85.         end 
  86.     } 
  87.     return i 
  88.  
  89. //判断是否是含有韩文-utf-8 (网页特效) 
  90. function checkkoreachar(str) { 
  91.     for(i=0; i<str.length; i++) { 
  92.         if(((str.charcodeat(i) > 0x3130 && str.charcodeat(i) < 0x318f) || (str.charcodeat(i) >= 0xac00 && str.charcodeat(i) <= 0xd7a3))) { 
  93.             return true; 
  94.         } 
  95.     } 
  96.     return false; 
  97. }//开源代码phpfensi.com 
  98.  
  99. //判断是否有中文字符-gbk (javascript) 
  100. function check_chinese_char(s){ 
  101.     return (s.length != s.replace(/[^x00-xff]/g,"**").length); 
  102.  

出处:http://www.phpfensi.com/php/20140816/4283.html


相关教程