为什么一定要这么用呢,因为正则是一个参数,默认参数只好用正则来表示了。
按理说,应该!empty($str),但是为了前后保持一致,所以,求等效的正则preg_match($正则,'abcd'); //true
preg_match($正则,''); //false
preg_match($正则,' '); //false
preg_match($正则,'      '); //false【注】 最好是这样:
空值、1个空格、N个空格、都返回false。

解决方案 »

  1.   

    补充一点,允许除以下列出的之外任何字符:
    1、'',纯粹的空值,因为怕客户忘了,客户端检测过了,怕js没开;
    2、‘ ’,1到N个纯粹的空格,怕客户不小心;【注意】允许其他任何字符,包括乱七八糟的或者恶意的代码,之后我要收集这些字符,转义后分析客户的行为。
      

  2.   

    编码绝对是utf-8,但是客户输入的是什么只有天知道。
    我的需求是这样的:
    规则太复杂不好,对客户是一种负担,对自己是一种折磨,客户如果就是来胡搞乱搞的,我就接受他提交的任意字符,待日后分析,如果客户真的是不小心忘了输入就直接回车提交了呢?客户端已经做了脚本,但怕禁用。
    要不这样,仅仅是这样:
    如果他禁用了脚本,那我就放弃对这个人的检测,客户输入什么都无所谓,只要不是空值就好。
      

  3.   

    非unicode就
    /[\x01-\x1f\x21-\xff]/
      

  4.   

    其实理论上utf-8直接"/[^ ]/u"也可以无字符字串无论什么正则,preg_match都是false的