首先,我想知道什么是FILTER_SANITIZE_ENCODED默认标志?
以及当我尝试时:
filter_var('α', FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_LOW);
['α'ascii是224,当我使用FILTER_FLAG_ENCODE_LOW
时,它应该对小于32的ascii值进行编码。但是当我输入224 ascii字符时,它将得到编码。
((edit)我不想对127以上的ascii字符进行编码,但它返回'%CE%B1']
不确定我确切地了解您想要什么,但是..这行得通吗?
function encode(string $str):string{
$ret="";
for($i=0,$max=strlen($str);$i<$max;++$i){
if(ord($str[$i]) > 127){$ret.=$str[$i];}else{$ret.=urlencode($str[$i]);}
}
return $ret;
}
它对所有字符进行编码,但uint8值大于127的字符除外,这些字符保持不变。这就是您想要的吗?