很多像我一样的正则初学者往往匹配中文汉字的时候直接用‘.’来匹配
不过总是无法通过测试
其实用正则匹配汉字是用编码的
解决方法参考如下:
- <?php
- $act
ion = trim($_GET['act ion']); - if($act
ion == "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_]+$/ ",$str)) //UTF-8汉字字母数字下划线正则表达式 -
{ -
echo "<font color=red>您输入的[".$str."]含有违法字符</font>"; -
} -
else -
{ -
echo "<font color=green>您输入的[".$str."]完全合法,通过!</font>"; -
} - }
- ?>
- <form method="POST" act
ion="?act ion=sub"> - 输入字符(数字,字母,汉字,下划线):
-
<input type="text" name="dir" value=""> -
<input type="submit" value="提交"> - </form>