您的位置:

php的正则匹配gbk时,php正则表达式匹配

本文目录一览:

PHP中当前文件为GBK或GB2312编码,怎么用正则表达式取汉字

if (ereg('/[\u4E00-\u9FA5]/',$str)){

$chn = str_replace('/[^\u4E00-\u9FA5]/','', $str);

}

判断是否有中文,$chn=过去非中文字符

PHP正则匹配汉字和半角逗号,开头和结尾禁止半角逗号、禁止连续两个半角逗号。自己没知道OK的,就不要答了

匹配汉字其实与编码有关系的,UTF8的正则与GBK的正则就会有差别。

我按你的要求改了一个在UTF-8编码下匹配的,但还没达到禁止连续两个半角逗号的要求。你可以先看看,看看有没有启发。

$str = "汉,中国,人,字";

if (preg_match("/^[^,][\x{4e00}-\x{9fa5},]+[^,]$/u",$str)) {

print("合法");

} else {

print("不合法");

}

============

如果未能解决两个半角逗号的问题,其他楼主也可以降低一下要求,分两次处理。第一次先替换掉双半解逗号为一个,再使用正则来匹配。

能解决问题是关键,方法可以再优化,对不?

php正则匹配中文乱码问题

当然乱码啦,一个汉字在php里是三个字符,你这样直接用.去匹配任意字符的话,三个.才等于一个汉字。你把一个汉字给截取掉了,当然乱码了,不信你把你的0,10改成0,11。就不乱码的,而且只匹配出两个汉字。汉字不是这样去匹配的,有专门匹配汉字的正则,

求个正则表达式,PHP下匹配2-15位英文数字下划线中文,但是数字不能开头

/^[\\u4e00-\\u9fa5_a-zA-Z][\\u4e00-\\u9fa5\\w]{1,14}$/

不需要转义的话就把\\改成\

\x80-\xff这个的编码是GBK

\\u4e00-\\u9fa5这个编码是UTF-8

不知道是不是这个原因

PHP正则表达式验证是否含有中文

判断是否有中文。

if (preg_match("/[\x7f-\xff]/", $string)) { echo "true"; }else{ echo "false"; }判断是否全部是中文

//if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在GB2312情况下使用 if (preg_match("/^[\x7f-\xff]+$/", $str)) { //兼容gb2312,utf-8

echo "true";

} else {

echo "false";

}

判断中文和编码有关 gbk是双字节,utf8是三字节,可以根据中文的范围来判断

编码范围1. GBK (GB2312/GB18030)

/x00-/xff GBK双字节编码范围

/x20-/x7f ASCII

/xa1-/xff 中文

/x80-/xff 中文

2. UTF-8 (Unicode)

/一-/龥 (中文)

/x3130-/x318F (韩文

/xAC00-/xD7A3 (韩文)

/u0800-/一 (日文)

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

正则例子:

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

preg_replace("/([一-龥])/","",$str);

希望可以采纳,谢谢。

正则表达式如何只匹配一个中文字符

php中匹配一个或多个中文字符(包含简体和繁体中文字符)的正则表达式如下:/[[b]\x{4e00}-\x{9fa5}]+/注意:php中正则表达式的16进制是以

\x

开头的。