php判断字符串内是否含有特殊字符,但是字符串含有中文就没效果了,请教?

时间:2022-01-19 20:12:31
如字符串$a="中国[]"我想判断这个字符串含有特殊字符,但是用ereg输出的是0,我把除了英文字母,数字和中文外的所有字符都是特殊字符 
请问如何处理,请写出整句代码,拜托.

6 个解决方案

#1


中文使用ASCII码进行验证,楼主可以试一下,本人已试过很多次,刚刚写的代码,是可以的:

采用PERL兼容的正则表达式:

<?php
$chinese=chr(0xa1)."-".chr(0xff);//中文匹配
$pattern="/^[a-zA-Z0-9($chinese)]{1,}$/";//加上英文、数字匹配
if(preg_match($zimu,"sfsdfsdf6555Ddd送到豆腐速度Fddfs"))//如验证含有中文、数字、英文大小写的字符
{
echo "不是特殊字符";//验证“sfsdfsdf6555Ddd送到豆腐速度Fddfs”结果是这个
}
else
{
echo "是特殊字符";//验证“+++++===|||\\ddfasfd”是这个
}


楼主试一下。

#2


中文在不同编码环境下,字节结构都不一样。你要判断哪个环境下的中文?

#3


1楼的朋友,你的发上来的代码是完整的吗,感觉有点不对,自已做了一点修改,发现还字符串有中文时显示“是特殊字符”代码如下:
<?php
$chinese=chr(0xa1)."-".chr(0xff);//中文匹配
$pattern="/^[a-zA-Z0-9($chinese)]{1,}$/";//加上英文、数字匹配
if(preg_match($pattern,"sfsdfsdf6555Ddd送到豆腐速度Fddfs"))//如验证含有中文、数字、英文大小写的字符
{
echo "不是特殊字符";//验证“sfsdfsdf6555Ddd送到豆腐速度Fddfs”结果是这个
}
else
{
echo "是特殊字符";//验证“+++++===|||\\ddfasfd”是这个
}
?>
2楼的朋友,我的编码环境是utf-8

#4


楼主在这里使用preg_match时正则颠倒了,使用的pattern应该为匹配特殊符号的pattern,而不是匹配正常字符的pattern
所以思路是错误的

#5



<?php
$a="中国[]";
$regx = '/[^0-9a-zA-Z一-龥]/u';
$result = preg_match($regx,$a);
if($result){
//存在特殊字符
}
?>

#6


想法地方官

#1


中文使用ASCII码进行验证,楼主可以试一下,本人已试过很多次,刚刚写的代码,是可以的:

采用PERL兼容的正则表达式:

<?php
$chinese=chr(0xa1)."-".chr(0xff);//中文匹配
$pattern="/^[a-zA-Z0-9($chinese)]{1,}$/";//加上英文、数字匹配
if(preg_match($zimu,"sfsdfsdf6555Ddd送到豆腐速度Fddfs"))//如验证含有中文、数字、英文大小写的字符
{
echo "不是特殊字符";//验证“sfsdfsdf6555Ddd送到豆腐速度Fddfs”结果是这个
}
else
{
echo "是特殊字符";//验证“+++++===|||\\ddfasfd”是这个
}


楼主试一下。

#2


中文在不同编码环境下,字节结构都不一样。你要判断哪个环境下的中文?

#3


1楼的朋友,你的发上来的代码是完整的吗,感觉有点不对,自已做了一点修改,发现还字符串有中文时显示“是特殊字符”代码如下:
<?php
$chinese=chr(0xa1)."-".chr(0xff);//中文匹配
$pattern="/^[a-zA-Z0-9($chinese)]{1,}$/";//加上英文、数字匹配
if(preg_match($pattern,"sfsdfsdf6555Ddd送到豆腐速度Fddfs"))//如验证含有中文、数字、英文大小写的字符
{
echo "不是特殊字符";//验证“sfsdfsdf6555Ddd送到豆腐速度Fddfs”结果是这个
}
else
{
echo "是特殊字符";//验证“+++++===|||\\ddfasfd”是这个
}
?>
2楼的朋友,我的编码环境是utf-8

#4


楼主在这里使用preg_match时正则颠倒了,使用的pattern应该为匹配特殊符号的pattern,而不是匹配正常字符的pattern
所以思路是错误的

#5



<?php
$a="中国[]";
$regx = '/[^0-9a-zA-Z一-龥]/u';
$result = preg_match($regx,$a);
if($result){
//存在特殊字符
}
?>

#6


想法地方官