我现在使用 addcslashes($value, "\000\n\r\\'\"\032") 过滤过的。
如果要过滤所有16进制的我应该怎么修改addcslashes后面的参数呢?

解决方案 »

  1.   

    to: Meteorlet$value = "\xE3";
    echo addslashes($value);addslashes 是不行的,我希望输出的是"\xE3"字符串,而不是这个16进制表示的字符
      

  2.   

    "\xE3" 就是字符,'\xE3'才是字符串。
      

  3.   

    不管是字符还是字符串,字符串中含有这样的16进制表示,如何把这些替换掉或者干脆删除呢?谁能告诉我,如何把"Delete\xB7\xBF\xB2\xFA?"里面的所有16进制表示全部删除或者替换!或者输出"Delete\xB7\xBF\xB2\xFA?",而不是像现在输出的是"Delete����"
      

  4.   

    ���� CSDN转换过了,实际上我看到的是一个个框框
      

  5.   

    ctype_xdigit
      -- Check for character(s) representing a hexadecimal digit 
    检查是否是16进制的字符串
      

  6.   


    $str = stripslashes($str);
    $str = mysql_escape_string($str);
      

  7.   

    to gzty(【风逍遥】123笨小孩天天快乐) 不行~~ctype_xdigit只能用来检查字符串中都是16进制的情况。而我的情况是字符串中有一部分是。to Mistruster(弱智d) mysql_escape_string也许可以,但是这样的处理方法不透明,这样处理还是不知道这个字符串中是否含有16进制表示的内容,因此也无法做相应的程序判断。
      

  8.   

    用正则应该比较简单吧\\x[a-zA-Z0-9]{2}
      

  9.   

    要看你的数据来源是什么了如果直接就是 $value = "\xE3"; 基本上不好办
    如果是读文本文件里的字符串,其中包括它 \xE3 那你就直接用 mysql_escape_string
      

  10.   

    删除十六进制字符:
    ereg_replace('/\x80-\xFF/', '', $str);
    删除十六进制形式的字符串:
    ereg_replace('/\\\\x[0-9A-F]{2}/', '', $str);如果要保存十六进制字符串,请用binary字段
      

  11.   

    to Meteorlet:
    $str = ereg_replace("/\x80-\xFF/", '', $str);
    这个什么也替换不了吧,应该写成:
    $str = ereg_replace("[\x80-\xFF]", '', $str);但这样就把汉字换没了用这个
    $str = "Delete\xB7\xBFa\xFA 汉字";
    $str = ereg_replace("[^\x80-\xFF][\x80-\xFF][^\x80-\xFF]", '', $str);
    好象也不对,碰到这种情况就不知道了怎么办了
    $str = "\xFA汉字";大家继续……
      

  12.   

    或许下面这个可能对你有帮助
    【字符串跟十六进制的互换】http://blog.tonyang.com/?action=show&id=126
      

  13.   

    /**   
     * (字符串16进制编码/解码 )   
     *   
     * @access public   
     * @param  string   $string    需要进行编码解码的字串   
     * @return string    
     */   
    function hexEncode($str=null){    
        return preg_replace('/(.)/es', "str_pad(dechex(ord('\\1')),2,'0',STR_PAD_LEFT)", $str);        
    }    
    function hexDecode($str=null){    
        return preg_replace('/(\w{2})/e',"chr(hexdec('\\1'))",$str);    
    }