这个的ascii是92,用'\\','\x5c','\\x5c'好像都有问题说什么没看懂!
_____________________________________________________怎么用这个函数提取所有非中文,英文,数字及下划线?$preg = '/[^' . chr(0xa1) . '-' . chr(0xff) . 'A-Za-z0-9_]+$/';
$stri = '#';
if( preg_match($preg, $stri) ) {
   print('匹配!');
} else {
   print('不匹配!');
}

解决方案 »

  1.   

    hoho,抱歉,少打了个符号‘\’,我意思是‘\’的ascii值为92 ,但是用正则表达式'\\','\x5c','\\x5c'都不能去匹配'\'
      

  2.   

    to PleaseDoTellMeWhy:$preg好像不能检测出全角下的符号,比如¥
      

  3.   

    //楼上的老大,我下面的代码是检测用户名中的非法符号的:
    ...
    elseif (preg_match_all("([-!@#$%^&*()+{}|:\"<>?=;',./\\s[\\]\\\\])", $username, $matches)) {
                $isUseful = 3;
                for ($i=0; $i< count($matches[0]); $i++) {
                    $errs .= $matches[0][$i] . ',';
                }
            }
    ...
    //这个能检测出‘\’,但是输出$errs时,是每匹配一个'\',输入两个‘,,’,怎么会这样啊?
      

  4.   

    我在输入框中只输入一个‘\’,传到$username这里怎么会有两个'\'的呢?
    难道这就是每匹配一个‘\’时,输出‘,,’的原因?
      

  5.   

    我在输入框中只输入一个‘\’,传到$username这里怎么会有两个'\'的呢?
    难道这就是每匹配一个‘\’时,输出‘,,’的原因?
      

  6.   

    你习惯用括号?("([-!@#$%^&*()+{}|:\"<>?=;',./\\s[\\]\\\\])呵呵。建议用#,或者/ .比较不容易冲突。