//老,唐老鸭等有老字的都不能通过
规则这样就可以了:$pre='/老/';
preg_match返回匹配到的次数,0或1,它只执行一次匹配
'/[\'\"\ \ ]/'
这个规则是查找,单引号,双引号,半间空格,全角空格,这四个的集合,只要有任意一个,都不通过,除了单引号要加\转义外,其它都可以不加

解决方案 »

  1.   

    指定一下编码
    $pre='/[\'\"\ \ ]/u';
      

  2.   

    $str='唐老鸭'; 
    $pre='/[\'\"\ \ ]/';
    if(preg_match($pre, $str)){
        echo $str.'不通过';
    }
    else{
        echo $str.'通过';
    }唐老鸭通过
    $str='唐老 鸭'; 
    $pre='/[\'\"\ \ ]/';
    if(preg_match($pre, $str)){
        echo $str.'不通过';
    }
    else{
        echo $str.'通过';
    }唐老 鸭不通过不知道你要做什么
      

  3.   


    不好意思,我的问题没有表达清楚。
    就是检测$str字符串是否包含$pre中的单引号空格等,有就表示不通过,没有就表示通过。
    例如:$str='你好' 是可以通过的
    $str='你 好' 两字中间有空格是不能通过的
    但我发现$str='唐老鸭'或$str='老'都不能通过,两个都没有包含半角空格全角空格单引号双引号,很奇怪为什么?
    谢谢。
      

  4.   

    不好意思,我的问题没有表达清楚。
    就是检测$str字符串是否包含$pre中的单引号空格等,有就表示不通过,没有就表示通过。
    例如:$str='你好' 是可以通过的
    $str='你 好' 两字中间有空格是不能通过的
    但我发现$str='唐老鸭'或$str='老'都不能通过,两个都没有包含半角空格全角空格单引号双引号,很奇怪为什么?
    谢谢。
      

  5.   

    我这里第一个没通过,不知道为什么
    把$pre中的全角的大空格去掉就可以
      

  6.   

    #2 应经说了,utf-8 编码就加个 u 属性我这里第一个没通过,不知道为什么
      

  7.   

    如果是我解决这个,不想用正则~提供一种思路讨论下
    代码粗糙没测试,有错误请原谅
    $str = '唐 老' 鸭';
    $search = array(' ', ','); //需要检测的字符
    $replace = ' '; //禁用字符全换成空格
    $str = str_replace($search, $replace, $str);
    if(strpos($str, ' ') !== false){ // 判断有没有空格
        echo '不通过';
    }