当前位置:首页 » 编程语言 » 正则php中文

正则php中文

发布时间: 2025-02-21 13:22:45

‘壹’ UTF-8正则表达式如何匹配汉字,utf-8正则表达式_php教程

判断输入内容是否含有违法字符,请看下面代码

$str = "编程";

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

{

echo "您输入的[".$str."]含有违法字符";

}

else

{

echo "您输入的[".$str."]完全合法,通过!";

}

-----------------------

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文件)

<?php

$action = trim($_GET['action']);

if($action == "sub")

{

$str = $_POST['dir'];

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

{

echo "您输入的[".$str."]含有违法字符";

}

else

{

echo "您输入的[".$str."]完全合法,通过!";

}

}

GBK:

代码如下:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312汉字字母数字下划线正则表达式

以上内容就是PHP中UTF-8正则表达式如何匹配汉字的全部内容,希望大家喜欢。

‘贰’ 求PHP 的正则表达式 大全

匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为 匹配首尾空白字符的正则表达式:^\s*|\s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 评注:匹配形式如 0511-4405222 或 021-87888822 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 匹配中国邮政编码:[1-9]\d{5}(?!\d) 评注:中国邮政编码为6位数字 匹配身份证:\d{15}|\d{18} 评注:中国的身份证为15位或18位 匹配ip地址:\d+\.\d+\.\d+\.\d+ 评注:提取ip地址时有用 匹配特定数字: ^[1-9]\d*$ //匹配正整数 ^-[1-9]\d*$ //匹配负整数 ^-?[1-9]\d*$ //匹配整数 ^[1-9]\d*|0$ //匹配非负整数(正整数 + 0) ^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0) ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0) ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0) 评注:处理大量数据时有用,具体应用时注意修正 匹配特定字符串: ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串 /http:\/\/(.*)\//i //匹配外部链接地址

满意请采纳

‘叁’ 怎么用php正则获得a标签内的文字啊

php中正则匹配只要使用这两个函数:

preg_match_all

preg_match

这里使用preg_match_all,代码如下:

$subject='<ahref="xxx.php">abc测试</a>';//假设这是需要匹配的字符串

$pattern='/<ahref="[^"]*"[^>]*>(.*)</a>/';//这是匹配的正则表达式

preg_match_all($pattern,$subject,$matches);//开始匹配,该函数会把匹配结果放入$matches数组中


echo"<pre>";
print_r($matches);
/**
结果是:

Array
(
[0]=>Array
(
[0]=>abc测试
)

[1]=>Array
(
[0]=>abc测试
)

)

*/

‘肆’ PHP正则表达,汉字大小写字母数字下划线以及@符号

邮箱的正则表达式为:/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$/,其他的一楼已经回答得很完备了

‘伍’ PHP中文文字正则替换,并将匹配的中文文字加粗

<?php
$str = "中文123美丽abc开心。?我们";
echo preg_replace('#(?:(?![,。?])[xC0-xFF][x80-xBF]+)+#','<b>$0</b>',$str);
//(?:[xC0-xFF][x80-xBF]+) 单个中文字符,不需要引用,因此使用?:
//(?![,。?]) 排除中文标点符号,这里要写入中文标点
//(?:(?![,。?])[xC0-xFF][x80-xBF]+) 排除中文标点符号后的中文字符
//(?:[xC0-xFF][x80-xBF]+)+ 1个以上的中文字符
//结果 <b>中文</b>123<b>美丽</b>abc<b>开心。?我们</b>
?>

‘陆’ php正则表达式匹配一段中文,中间有换行,空白,应该怎么写

有多种处理方法:

1、使用[sS]匹配任意字符,而不是使用“.”
2、使用s单行修饰模式,例:$pattern='#abc.*?def#s';//能匹配abc换行def
3、使用s*匹配换行和空格,php里s能匹配空白字符,含换行

php里的中文使用[x7f-xff]表示,因此,使用正则:

$pattern='#[x7f-xff]+(?:s*[x7f-xff]+)*#';即可

热点内容
博德之门脚本 发布:2025-02-22 09:51:51 浏览:605
行缓存函数 发布:2025-02-22 09:47:37 浏览:162
电琴脚本 发布:2025-02-22 09:32:41 浏览:782
磁盘阵列存储器作用 发布:2025-02-22 09:29:51 浏览:680
数学之算法 发布:2025-02-22 09:14:20 浏览:586
linux历史命令查看 发布:2025-02-22 09:14:10 浏览:73
图片文件夹项目 发布:2025-02-22 09:02:15 浏览:112
存储报废气瓶 发布:2025-02-22 08:56:52 浏览:71
美国总统特朗普什么时候来中国访问的 发布:2025-02-22 08:56:51 浏览:905
加密机制的协议是 发布:2025-02-22 08:44:24 浏览:792