用php如何过滤16进制的字符串 我现在使用 addcslashes($value, "\000\n\r\\'\"\032") 过滤过的。如果要过滤所有16进制的我应该怎么修改addcslashes后面的参数呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to: Meteorlet$value = "\xE3";echo addslashes($value);addslashes 是不行的,我希望输出的是"\xE3"字符串,而不是这个16进制表示的字符 "\xE3" 就是字符,'\xE3'才是字符串。 不管是字符还是字符串,字符串中含有这样的16进制表示,如何把这些替换掉或者干脆删除呢?谁能告诉我,如何把"Delete\xB7\xBF\xB2\xFA?"里面的所有16进制表示全部删除或者替换!或者输出"Delete\xB7\xBF\xB2\xFA?",而不是像现在输出的是"Delete����" ���� CSDN转换过了,实际上我看到的是一个个框框 ctype_xdigit -- Check for character(s) representing a hexadecimal digit 检查是否是16进制的字符串 $str = stripslashes($str);$str = mysql_escape_string($str); to gzty(【风逍遥】123笨小孩天天快乐) 不行~~ctype_xdigit只能用来检查字符串中都是16进制的情况。而我的情况是字符串中有一部分是。to Mistruster(弱智d) mysql_escape_string也许可以,但是这样的处理方法不透明,这样处理还是不知道这个字符串中是否含有16进制表示的内容,因此也无法做相应的程序判断。 用正则应该比较简单吧\\x[a-zA-Z0-9]{2} 要看你的数据来源是什么了如果直接就是 $value = "\xE3"; 基本上不好办如果是读文本文件里的字符串,其中包括它 \xE3 那你就直接用 mysql_escape_string 删除十六进制字符:ereg_replace('/\x80-\xFF/', '', $str);删除十六进制形式的字符串:ereg_replace('/\\\\x[0-9A-F]{2}/', '', $str);如果要保存十六进制字符串,请用binary字段 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汉字";大家继续…… 或许下面这个可能对你有帮助【字符串跟十六进制的互换】http://blog.tonyang.com/?action=show&id=126 /** * (字符串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); } dedecms后台问题 用PHP 把3D(.STL)的文件转换成图片文件 discuz里的一行代码看不懂? php有没有这种功能呀???? 怎样通过“弹出文件下载窗口事件”控制当前页面? 跪求php+oracle的新闻分页程序 php如何通过session判断某个用户是否在线(急) vbb问题 php怎么实现动态传参数??? 缩略图 谁能解释这种写法是什么意思:<?= @$user ?> 请教关于上传语句,谢谢
echo addslashes($value);addslashes 是不行的,我希望输出的是"\xE3"字符串,而不是这个16进制表示的字符
-- Check for character(s) representing a hexadecimal digit
检查是否是16进制的字符串
$str = stripslashes($str);
$str = mysql_escape_string($str);
如果是读文本文件里的字符串,其中包括它 \xE3 那你就直接用 mysql_escape_string
ereg_replace('/\x80-\xFF/', '', $str);
删除十六进制形式的字符串:
ereg_replace('/\\\\x[0-9A-F]{2}/', '', $str);如果要保存十六进制字符串,请用binary字段
$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汉字";大家继续……
【字符串跟十六进制的互换】http://blog.tonyang.com/?action=show&id=126
* (字符串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);
}