php正则判断中文韩文的编码的例子

中文编码

双字节字符编码范围:

1. GBK (GB2312/GB18030)

\x00-\xff           →GBK双字节编码范围
\x20-\x7f         →ASCII    取出非汉字的字符
\xa1-\xff 中文 →gb2312 取出所有中文(不包括字母数字和字符)
\x80-\xff 中文 →gbk 取出所有中文(不包括字母数字和字符)     

2. UTF-8 (Unicode)

\一-\?    →(中文) 取出所有中文
\x3130-\x318F    →(韩文) 取出所有韩文
\xAC00-\xD7A3   →(韩文) 取出所有韩文
\?-\一   →(日文) 取出所有日文

^ 可以用来互相转换

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

代码例子

//判断内容里有没有中文-GBK (PHP)
function check_is_chinese($s){
return preg_match('/[x80-xff]./', $s);
}
//获取字符串长度-GBK (PHP)
function gb_strlen($str){
$count = 0;
for($i=0; $i<strlen($str); $i++){
$s = substr($str, $i, 1);
if (preg_match("/[x80-xff]/", $s)) ++$i;
++$count;
}
return $count;
}
//截取字符串字串-GBK (PHP)
function gb_substr($str, $len){
$count = 0;
for($i=0; $i<strlen($str); $i++){
if($count == $len) break;
if(preg_match("/[x80-xff]/", substr($str, $i, 1))) ++$i;
++$count;
}
return substr($str, 0, $i);
}
//统计字符串长度-UTF8 (PHP)
function utf8_strlen($str) {
$count = 0;
for($i = 0; $i < strlen($str); $i++){
$value = ord($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;
else die('Not a UTF-8 compatible string');
}
$count++;
}
return $count;
}
//截取字符串-UTF8(PHP)
function utf8_substr($str,$position,$length){
$start_position = strlen($str);
$start_byte = 0;
$end_position = strlen($str);
$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;
}
$value = ord($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;
else die('Not a UTF-8 compatible string');
}
$count++;
}
return(substr($str,$start_position,$end_position-$start_position));
}
//判断是否是有韩文-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);
}

总结

正则表达式经常来判断中文和韩文等非英文字符,备份一下这些编码的范围以方便查询。

在正则表达式中经常要判断中文,gbk编码是双字节,而utf8是三字节

时间: 2024-07-29 16:33:41

php正则判断中文韩文的编码的例子的相关文章

php正则判断中文字符

php教程正则判断中文字符 $str = "中国"; echo $str; echo "<hr>"; //if   (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) {   //只能在gb2312情况下使用 if   (preg_match("/^[x7f-xff]+$/", $str)) { //兼容gb231

日本著名购物网站将推出中文韩文版

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 日本著名购物网站乐天公司将于近期推出网上商城"乐天市场"的中.韩文版本,以吸引更多中国和韩国顾客,进一步开拓亚洲市场. <日本经济新闻>15日报道说,中国.韩国.泰国等地的消费者对日本年轻女性的时尚十分关注,因此,"乐天市场"的女装.日用品以及饰品等在海外非常受欢迎.去年12月"乐

php 正则判断中文(自动识别UTF-8 &amp; GBK编码)

 代码如下 复制代码 $action = trim($_get['action']); if($action == "sub") {     $str = $_post['dir'];        //if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."a-za-z0-9_]+$/",$str)) //gb2312汉字字母数字下划线正则表达式     if(!preg_match(&q

PHP 正则判断中文UTF-8或GBK的思路及具体实现_php技巧

UTF-8匹配: 在javascript中,要判断字符串是中文是很简单的.比如: 复制代码 代码如下: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test(str)) { alert("该字符串全部是中文"); }else{ alert("该字符串不全部是中文"); } //php中,是用\x表示十六进制数据的.于是,变换成如下的代码: $str = "php编程"; if (pr

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])/","",$s

php用正则判断是否为中文例子

php用preg_match来匹配并判断一个字符串中是否含有中文或者都是中文的方法如下: $str = 'php学习博客'; if(preg_match('/[\x7f-\xff]/', $str)){   echo '字符串中有中文<br/>'; }else{   echo '字符串中没有中文<br/>'; } if(preg_match('/^[\x7f-\xff]+$/', $str)){   echo '字符串全是中文'; }else{   echo '字符串不全是中文';

C# 获取CorelDRAW文件里文字物件里的字,中文是乱码(像是类似韩文的字),英文和数字可以正常显示,求大神指点如何能正确获取中文。

问题描述 usingCorelDRAW;//引用CorelDRAW.dll代码简化内容如下CorelDRAW.Applicationcdr=newCorelDRAW.Application();cdr.Visible=true;cdr.Open(@"F:45-46版.cdr");CorelDRAW.ShapesclsShapes=cdr.ActiveDocument.ActivePage.ActiveLayer.Shapes;foreach(ShapemShapeinclsShapes

win7系统语言如何将中文修改为韩文?

win7系统语言如何将中文修改为韩文? 1.按下"Win+R"组合键打开运行,在框中输入:intl.cpl 后点击确定打开语言设置界面 2.在"键盘和语言"选卡下点击"安装/卸载语言..."; 3.点击"安装显示语言" 4.点击"启动Windows Update"; 5.找到朝鲜语语言包并勾选起来,点击确定; 6.等待下载完后点击"安装更新"; 7.安装完成后重启计算机,然后按照步骤一打

Adobe和Google 共同发布一款针对中文、日文、韩文的开源字体

摘要: Adobe和Google 共同发布了一款针对中文.日文.韩文的开源字体,包括65535个象形文字,是目前东亚文字最大的字体之一.目前这款字体在Google Fonts和Adobe字体库已经可以免费获取. 两公 Adobe和Google 共同发布了一款针对中文.日文.韩文的开源字体,包括65535个象形文字,是目前东亚文字最大的字体之一.目前这款字体在Google Fonts和Adobe字体库已经可以免费获取. 两公司市场部门出于不同的考虑,对这款字体的命名不同,Adobe称之为Sourc