Maison >développement back-end >tutoriel php >请教正则匹配,有个小疑惑
<?php$str='唐老鸭'; //老,唐老鸭等有老字的都不能通过$pre='/[\'\"\ \ ]/'; //把全角空格去掉就可以if(preg_match($pre, $str)){ echo $str.'不通过';}else{ echo $str.'通过';}?>
//老,唐老鸭等有老字的都不能通过
规则这样就可以了:$pre='/老/';
preg_match返回匹配到的次数,0或1,它只执行一次匹配
'/[\'\"\ \ ]/'
这个规则是查找,单引号,双引号,半间空格,全角空格,这四个的集合,只要有任意一个,都不通过,除了单引号要加\转义外,其它都可以不加
指定一下编码
$pre='/[\'\"\ \ ]/u';
$str='唐老鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){ echo $str.'不通过';}else{ echo $str.'通过';}唐老鸭通过
$str='唐老 鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){ echo $str.'不通过';}else{ echo $str.'通过';}唐老 鸭不通过
$str='唐老鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){ echo $str.'不通过';}else{ echo $str.'通过';}唐老鸭通过
$str='唐老 鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){ echo $str.'不通过';}else{ echo $str.'通过';}唐老 鸭不通过
//老,唐老鸭等有老字的都不能通过
规则这样就可以了:$pre='/老/';
preg_match返回匹配到的次数,0或1,它只执行一次匹配
'/[\'\"\ \ ]/'
这个规则是查找,单引号,双引号,半间空格,全角空格,这四个的集合,只要有任意一个,都不通过,除了单引号要加\转义外,其它都可以不加
没有呀,我那两个测试结果有什么不对吗?
没有呀,我那两个测试结果有什么不对吗?
没有呀,我那两个测试结果有什么不对吗?
#2 应经说了,utf-8 编码就加个 u 属性
没有呀,我那两个测试结果有什么不对吗?
#2 应经说了,utf-8 编码就加个 u 属性
没有呀,我那两个测试结果有什么不对吗?
指定一下编码
$pre='/[\'\"\ \ ]/u';
如果是我解决这个,不想用正则~提供一种思路讨论下
代码粗糙没测试,有错误请原谅
$str = '唐 老' 鸭';$search = array(' ', ','); //需要检测的字符$replace = ' '; //禁用字符全换成空格$str = str_replace($search, $replace, $str);if(strpos($str, ' ') !== false){ // 判断有没有空格 echo '不通过';}
离开编辑器果然原形毕露