本文目录一览:
- 1、PHP中当前文件为GBK或GB2312编码,怎么用正则表达式取汉字
- 2、PHP正则匹配汉字和半角逗号,开头和结尾禁止半角逗号、禁止连续两个半角逗号。自己没知道OK的,就不要答了
- 3、php正则匹配中文乱码问题
- 4、求个正则表达式,PHP下匹配2-15位英文数字下划线中文,但是数字不能开头
- 5、PHP正则表达式验证是否含有中文
- 6、正则表达式如何只匹配一个中文字符
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
开头的。