PHP强大的内置filter (二) 完
1 <?php 2 #Sanitize filters 3 #Sanitize filters 可以清理掉不规范的字符 4 # FILTER_SANITIZE_EMAIL 可以清理除了 字母和数字 以及 !#$%&'*+-/=?^_`{|}~@.[] 以外的字符 (感觉没什么用啊) 5 $result = filter_var('这里是一个email地址asdjaslkd@sdjkasdj.com',FILTER_SANITIZE_EMAIL); 6 var_dump($result); 7 # FILTER_SANITIZE_ENCODED 处理URL编码 有4个flags 8 # FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符 9 # FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符 10 # FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符 11 # FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符 12 # 感觉还是urlencode函数更实用 13 $result = filter_var('http://www.longxiao7.com',FILTER_SANITIZE_ENCODED); 14 var_dump($result); 15 # FILTER_SANITIZE_MAGIC_QUOTES 等同于 addslashes 函数 16 # FILTER_SANITIZE_NUMBER_FLOAT 删除浮点数中所有非法的字符 此FILTER可能存在的flags如下 17 # FILTER_FLAG_ALLOW_FRACTION 允许小数部分 18 # FILTER_FLAG_ALLOW_THOUSAND 允许千分位计数 19 # FILTER_FLAG_ALLOW_SCIENTIFIC 允许科学计数 20 $result = filter_var('0.54548',FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); 21 var_dump($result); 22 $result = filter_var('1000,000,000',FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_THOUSAND); 23 var_dump($result); 24 $result = filter_var('1E20',FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_SCIENTIFIC); 25 var_dump($result); 26 # FILTER_SANITIZE_NUMBER_INT 过滤整数以外的字符 27 $result = filter_var('54548)*)(……&*%6554……¥测试字符.055',FILTER_SANITIZE_NUMBER_INT); 28 var_dump($result); 29 # FILTER_SANITIZE_SPECIAL_CHARS 处理HTML转义字符 '"<>& 以及 ASCII 值小于 32 的字符 30 # flags 31 # FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符 32 # FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符 33 # FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符 34 $result = filter_var('<script>alert(\' 中文\')</script>',FILTER_SANITIZE_SPECIAL_CHARS); 35 var_dump($result); 36 # FILTER_SANITIZE_FULL_SPECIAL_CHARS 上面那个加强版?貌似和htmlspecialchars函数是一样的 37 #FILTER_SANITIZE_STRING 过滤器去除或编码不需要的字符。 38 # flags 39 # FILTER_FLAG_NO_ENCODE_QUOTES - 该标志不编码引号 40 # FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符 41 # FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符 42 # FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符 43 # FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符 44 # FILTER_FLAG_ENCODE_AMP - 把 & 字符编码为 & 45 $result = filter_var('<script>alert(\' 中文\')</a>',FILTER_SANITIZE_STRING,FILTER_FLAG_ENCODE_AMP); 46 var_dump($result); 47 # FILTER_SANITIZE_URL 可以清理除了 字母和数字 以及 $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=以外的字符 48 # FILTER_UNSAFE_RAW 感觉意义不大,需要配合flags才能工作 详见PHP手册 49 ?>