php判断全是中文正则,php判断是否为中文正则表达式大全

php判断是否为中文正则表达式大全

$str="aaa";

if(!eregi("[^\x80-\xff]","$str"))

{

echo "是";

}

else

{

echo "不是";

}

?>

$str = "中国";

echo $str;

echo "


";

//if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) {

//只能在GB2312情况下使用

if (preg_match("/^[\x7f-\xff]+$/", $str)) { //兼容gb2312,utf-8

echo "正确输入";

} else {

echo "错误输入";

}

?>

如果想判断一个字符串内是否有含有中文,请用下面的代码:

if (preg_match("/[\x7f-\xff]/", $string)) {

echo "有中文";

}else{

echo "没有中文";

}

判断中文和编码有关

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);

//判断内容里有没有中文-GBK (PHP)

functioncheck_is_chinese($s){

returnpreg_match('/[\x80-\xff]./',$s);

}

//获取字符串长度-GBK (PHP)

functiongb_strlen($str){

$count= 0;

for($i=0;$i

$s=substr($str,$i, 1);

if(preg_match("/[\x80-\xff]/",$s)) ++$i;

++$count;

}

return$count;

}

//截取字符串字串-GBK (PHP)

functiongb_substr($str,$len){

$count= 0;

for($i=0;$i

if($count==$len)break;

if(preg_match("/[\x80-\xff]/",substr($str,$i, 1))) ++$i;

++$count;

}

returnsubstr($str, 0,$i);

}

//统计字符串长度-UTF8 (PHP)

functionutf8_strlen($str) {

$count= 0;

for($i= 0;$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;

elsedie('Not a UTF-8 compatible string');

}

$count++;

}

return$count;

}

//截取字符串-UTF8(PHP)

functionutf8_substr($str,$position,$length){

$start_position=strlen($str);

$start_byte= 0;

$end_position=strlen($str);

$count= 0;

for($i= 0;$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;

elsedie('Not a UTF-8 compatible string');

}

$count++;

}

return(substr($str,$start_position,$end_position-$start_position));

}

//判断是否是有韩文-UTF-8 (JavaScript)

functioncheckKoreaChar(str) {

for(i=0; i

if(((str.charCodeAt(i) > 0x3130 && str.charCodeAt(i) = 0xAC00 && str.charCodeAt(i) <= 0xD7A3))) {

returntrue;

}

}

returnfalse;

}

//判断是否有中文字符-GBK (JavaScript)

functioncheck_chinese_char(s){

return(s.length != s.replace(/[^\x00-\xff]/g,"**").length);

}

UTF-8匹配:

在javascript中,要判断字符串是中文是很简单的。比如:

var str = "php编程";

if (/^[\u4e00-\u9fa5]+$/.test(str)) {

alert("该字符串全部是中文");

}

else{

alert("该字符串不全部是中文");

}

php中,是用\x表示十六进制数据的。于是,变换成如下的代码:

$str = "php编程";

if (preg_match("/^[\x4e00-\x9fa5]+$/",$str)) {

print("该字符串全部是中文");

} else {

print("该字符串不全部是中文");

}

貌似不报错了,判断的结果也正确,不过把$str换成“编程”两字,结果却还是显示“该字符串不全部是中文”,看来这样的判断还是不够准确。

重要:查阅了发现,对于[\x4e00-\x9fa5]这块东西,自己做一个强化的解释

php的正则中, [\x4e00-\x9fa5],其实就是 字符和字符组的概念, \x{hex},表达一个16进制数,

需要注意的是hex 可以是1-2位的,也可以是4位的,但是如果是4位的必须加上大括号,

同时,如果是大于x{FF}的hex,必须和u 修饰符连用,不然会非法出错

网上只能找到匹配全角字符的正则: ^[\x80-\xff]*^/ ,这里可以不加大括号

[\u4e00-\u9fa5]可以匹配中文,但是PHP又不支持 不过,既然\x表示的十六进制数据,为什么和js里边提供的范围\x4e00-\x9fa5不一样呢?于是我就换成了下边的代码,发现真的准确了:

$str = "php编程";

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

print("该字符串全部是中文");

} else {

print("该字符串不全部是中文");

}

知道了php中utf-8编码下用正则表达式匹配汉字的最终正确表达式——/^[\x{4e00}-\x{9fa5}]+$/u,

参考以上文章写了如下一段测试代码(复制以下代码保存成.php文件)

$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("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str)) //UTF-8汉字字母数字下划线正则表达式

{ echo "

color=red>您输入的[".$str."]含有违法字符

"; }

else

{

echo "

color=green>您输入的[".$str."]完全合法,通过!

"; }

}

?>

action="?action=sub">

输入字符(数字,字母,汉字,下划线):

value="">

value="提交">

GBK:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str);

//GB2312汉字字母数字下划线正则表达式

$str="aaa";

if(!eregi("[^\x80-\xff]","$str"))

{

echo "是";

}

else

{

echo "不是";

}

?>

$str = "中国";

echo $str;

echo "


";

//if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) {

//只能在GB2312情况下使用

if (preg_match("/^[\x7f-\xff]+$/", $str)) { //兼容gb2312,utf-8

echo "正确输入";

} else {

echo "错误输入";

}

?>

如果想判断一个字符串内是否有含有中文,请用下面的代码:

if (preg_match("/[\x7f-\xff]/", $string)) {

echo "有中文";

}else{

echo "没有中文";

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]Hadoop集群_WordCount运行详解--MapReduce编程模型

Hadoop集群_WordCount运行详解--MapReduce编程模型 下面这篇文章写得非常好&#xff0c;有利于初学mapreduce的入门 http://www.nosqldb.cn/1369099810935.html 转载于:https://www.cnblogs.com/wxquare/p/4889613.html

LeetCode 2075. 解码斜向换位密码(模拟)

文章目录1. 题目2. 解题1. 题目 字符串 originalText 使用 斜向换位密码 &#xff0c;经由 行数固定 为 rows 的矩阵辅助&#xff0c;加密得到一个字符串 encodedText 。 originalText 先按从左上到右下的方式放置到矩阵中。 先填充蓝色单元格&#xff0c;接着是红色单元格…

php 无法加载css文件,解决ThinkPHP样式无法加载问题(CSS,JS),

解决ThinkPHP样式无法加载问题(CSS,JS)解决了ThinkPHP风格无法加载的问题(CSS&#xff0c;JS)&#xff0c;以下是thinkphp框架教程栏目&#xff0c;对ThinkPHP风格无法加载(CSS&#xff0c;JS)问题的解决方案&#xff0c;希望对有需要的人有所帮助&#xff01;1.项目入口文件in…

UI设计培训中所需要的手绘能力

一、漫画 主要不是绘画能力&#xff0c;更重分镜头&#xff0c;叙事能力&#xff0c;脚本编写能力&#xff0c;很多画的不好&#xff0c;但依然存活很多年的漫画还真不少&#xff0c;甚至可以证明&#xff0c;绘画能力的底线可以很低。 二、游戏原画 虽然工作内容是画画&#x…

LeetCode 2076. 处理含限制条件的好友请求(并查集)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;表示网络上的用户数目。每个用户按从 0 到 n - 1 进行编号。 给你一个下标从 0 开始的二维整数数组 restrictions &#xff0c;其中 restrictions[i] [xi, yi] 意味着用户 xi 和用户 yi 不能 成为 朋友 &#xff…

java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...

java判断一个字符串是否包含另外一个字符串&#xff0c;java另外一个,要检查一个字符串是否包含要检查一个字符串是否包含另外一个字符串需要使用indexOf()方法&#xff0c;如果indexOf方法返回大于等于0的值&#xff0c;则表示包含&#xff0c;若返回-1则表示字符串中不包含。…

设置停靠模式,切割设置星级图标

//星级 [self.startView setStarLevelFormStr:model.starCurrent]; - (void)createUI{ //在当前图片上放置五星级图片 UIImageView * upImageView [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 65, 23)]; upImageView.tag 2000; upImageView.image [UIImage imageN…

LeetCode 2078. 两栋颜色不同且距离最远的房子

文章目录1. 题目2. 解题1. 题目 街上有 n 栋房子整齐地排成一列&#xff0c;每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors &#xff0c;其中 colors[i] 表示第 i 栋房子的颜色。 返回 两栋 颜色 不同 房子之间的 最大 距离。 第 i 栋房…

php aura,AuraPHP路由器没有拿起参数

我不认为这与Aura.Router有关。引擎盖下的Aura.Router v 3.x使用Zend框架diactoros(Nothing with Diactoros也:-))。您可以看到匹配是如何完成的&#xff1a;https://github.com/auraphp/Aura.Router/blob/a6897f8f66fe8b89d6ef0ab988ff77b5f77076ce/src/Matcher.php#L115看起来…

LeetCode 2079. 给植物浇水(前缀和)

文章目录1. 题目2. 解题1. 题目 你打算用一个水罐给花园里的 n 株植物浇水。 植物排成一行&#xff0c;从左到右进行标记&#xff0c;编号从 0 到 n - 1 。其中&#xff0c;第 i 株植物的位置是 x i 。x -1 处有一条河&#xff0c;你可以在那里重新灌满你的水罐。 每一株植…

matlab提取图像中的一部分并移动,在Matlab中从图像中提取对象

这是一个很好的解决问题.这是一种你可以使用的方法,但我承认它绝不是完美的,也可能不那么健壮.希望它能带给你创意……我所做的基本上是用中值滤波器过滤图像(就像你做的那样)并使用bwareaopen删除小元素.然后我打电话给regionprops来获得一堆属性,其中最重要的是区域和偏心.这…

LeetCode 2080. 区间内查询数字的频率(哈希+二分查找)

文章目录1. 题目2. 解题2.1 超时解2.2 优化1. 题目 请你设计一个数据结构&#xff0c;它能求出给定子数组内一个给定值的 频率 。 子数组中一个值的 频率 指的是这个子数组中这个值的出现次数。 请你实现 RangeFreqQuery 类&#xff1a; RangeFreqQuery(int[] arr) 用下标从…

java里的super杀意思,java中Super到底是什么意思?必须举例说明!

马克-to-win&#xff0c;Super是一个参考(或说指针)指向他紧邻的父类(见下面的例子)。Super is a reference of its neighbour superclassSo Use super to call superclass’s constructor用super可以指向被隐藏的父类的同名成员。Use super to call superclass’s members tha…

C#中的多文档的使用

1.首先&#xff0c;新建一个窗体&#xff0c;设置窗体的IsMdiContainer true; 窗体的大小为700*600 长700 高600 2.在窗体的Load事件中添加如下代码 private void FormMain_Load(object sender, EventArgs e){Form form new Form();form.FormBorderStyle FormBorderStyle.…

list.php tid= field,dedecms列表页模板中调用当前栏目文章数

此方法适合5.6及5.7 其它未测修改 include/common.func.php文件&#xff0c;在最后加以下代码&#xff1a;//统计栏目文章数function GetTotalArc($tid){global $dsql;$sql GetSonIds($tid);$row $dsql->GetOne("Select count(id) as dd From dede_archives where ty…

LeetCode 1901. 找出顶峰元素 II(二分查找)

文章目录1. 题目2. 解题1. 题目 一个 2D 网格中的 顶峰元素 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat &#xff0c;其中任意两个相邻格子的值都 不相同 。找出 任意一个 顶峰元素 mat[i][j] 并 返回其位置 [i,j] 。 …

Tracing mysqld Using DTrace

http://dev.mysql.com/doc/refman/5.6/en/dba-dtrace-server.html转载于:https://www.cnblogs.com/zengkefu/p/4900476.html

LeetCode 2085. 统计出现过一次的公共字符串(哈希)

文章目录1. 题目2. 解题1. 题目 给你两个字符串数组 words1 和 words2 &#xff0c;请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。 示例 1&#xff1a; 输入&#xff1a;words1 ["leetcode","is","amazing","as",&q…

php表白页面,2020情人节表白页面(代码分享)

趁此单身汪伤心之日&#xff0c;作为一名前端程序猿的我也按捺不住了&#xff0c;撸个表白页面送给广大想表白的人儿。话不多说&#xff0c;先看效果(网页地址)&#xff1a;功能一个网页输入名称&#xff0c;生成带参数的网址。浏览器输入该网址&#xff0c;即可打开带有该名字…

matlab玫瑰,网上收到的用matlab画玫瑰花的代码怎么不行啊,报告错误,求大神

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼function plot_rosedraw_main(450,90);function draw_main(x,y)%粉红色玫瑰arcdata{1}[65 -60 150 350 866 -54 300 470 865 -56 30 230 1064 -57 300 490 17];ellipsedata{1}[73 -30 250 450 27 4059 -30 100 290 27 4065 -40 140…