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]的字符
正则例子:
PHP:
二、代码例子
PHP:
-
//判断内容里有没有中文-GBK (PHP)
-
function check_is_chinese($s){
-
}
-
-
//获取字符串长度-GBK (PHP)
-
function gb_strlen($str){
-
$count = 0;
-
for($i=0; $i<strlen($str); $i++){
-
++$count;
-
}
-
return $count;
-
}
-
-
//截取字符串字串-GBK (PHP)
-
function gb_substr($str, $len){
-
$count = 0;
-
for($i=0; $i<strlen($str); $i++){
-
if($count == $len) break;
-
++$count;
-
}
-
}
-
-
//统计字符串长度-UTF8 (PHP)
-
function utf8_strlen($str) {
-
$count = 0;
-
for($i = 0; $i <strlen($str); $i++){
-
if($value> 127) {
-
$count++;
-
if($value>= 192 && $value <= 223) $i++;
-
elseif($value>= 224 && $value <= 239) $i = $i + 2;
-
elseif($value>= 240 && $value <= 247) $i = $i + 3;
-
}
-
$count++;
-
}
-
return $count;
-
}
-
-
-
//截取字符串-UTF8(PHP)
-
function utf8_substr($str,$position,$length){
-
$start_byte = 0;
-
$count = 0;
-
for($i = 0; $i <strlen($str); $i++){
-
if($count>= $position && $start_position> $i){
-
$start_position = $i;
-
$start_byte = $count;
-
}
-
if(($count-$start_byte)>=$length) {
-
$end_position = $i;
-
break;
-
}
-
if($value> 127){
-
$count++;
-
if($value>= 192 && $value <= 223) $i++;
-
elseif($value>= 224 && $value <= 239) $i = $i + 2;
-
elseif($value>= 240 && $value <= 247) $i = $i + 3;
-
}
-
$count++;
-
-
}
-
}
-
-
-
//字符串长度统计-UTF8 [中文3个字节,俄文、韩文占2个字节,字母占1个字节] (Ruby)
-
def utf8_string_length(str)
-
temp = CGI::unescape(str)
-
i = 0;
-
j = 0;
-
temp.length.times{|t|
-
if temp[t] <127
-
i += 1
-
elseif temp[t]>= 127 and temp[t] <224
-
j += 1
-
if 0 == (j % 2)
-
i += 2
-
j = 0
-
else
-
j += 1
-
if 0 == (j % 3)
-
i +=2
-
j = 0
-
}
-
return i
-
}
-
-
//判断是否是有韩文-UTF-8 (javascript)
-
function checkKoreaChar(str) {
-
for(i=0; i<str.length; i++) {
-
if(((str.charCodeAt(i)> 0x3130 && str.charCodeAt(i) <0x318F) || (str.charCodeAt(i)>= 0xAC00 && str.charCodeAt(i) <= 0xD7A3))) {
-
return true;
-
}
-
}
-
return false;
-
}
-
//判断是否有中文字符-GBK (javascript)
-
function check_chinese_char(s){
-
return (s.length != s.replace(/[^\x00-\xff]/g,"**").length);
-
}
一看到代碼演示就想起我自己做的那個
比較垃圾的。。。
語法分色
呃……你那个我也研究了一下,不过没能领会精髓。
单纯分色还是比较容易的,你那个功能做得挺全的,算很不错了。不过程序架构似乎不太理想。
不是不太
而是相當。。。。
是因為我沒有寫注釋而且代碼風格不好唄
看你多敬業
寫得
缺哥哥做事总是很干净
呃……这段代码不是我写的:)
不是你写得你做的也很干净