Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php过滤器\u变量过滤器\u标志\u编码\u高_Php_Sanitize_Filter Var - Fatal编程技术网

php过滤器\u变量过滤器\u标志\u编码\u高

php过滤器\u变量过滤器\u标志\u编码\u高,php,sanitize,filter-var,Php,Sanitize,Filter Var,我有php函数_var()的休闲测试用例: 如果您运行上面的代码段,则输出不是我期望返回的结果。Ž是ASCII扩展列表中的数字142(参见:ASCII代码[dot]com)。所以我希望得到的是Ž;'(字符串,不带空格) 我必须找出哪里出了问题,我只是还不知道如何解决它 如果将“Ž”转换为十六进制UTF-8字节,则得到:C5 BD。这些十六进制字节对应于ISO-8859十六进制值:Ž½(参见:)。这两个字符然后由filter#u var解码为Å;½'. 在线查看此转换

我有php函数_var()的休闲测试用例:


如果您运行上面的代码段,则输出不是我期望返回的结果。Ž是ASCII扩展列表中的数字142(参见:ASCII代码[dot]com)。所以我希望得到的是Ž;'(字符串,不带空格)

我必须找出哪里出了问题,我只是还不知道如何解决它

如果将“Ž”转换为十六进制UTF-8字节,则得到:C5 BD。这些十六进制字节对应于ISO-8859十六进制值:Ž½(参见:)。这两个字符然后由filter#u var解码为Å;½'.

在线查看此转换器!!!:

所以基本上会发生什么:UTF-8字节被用来将它们翻译成拉丁字符字节。converter页面上显示了以下内容:“UTF-8字节为拉丁字符”,这是当您使用只知道8位字符的终端或编辑器显示UTF-8文件时通常会看到的内容

我认为我的编辑不是问题所在。我使用的是尾码为2的Mac(默认为UTF-8)。该测试也在一个html5页面上进行了测试,该页面的元字符设置为utf-8。此外,我使用的是defaut XAMPP本地主机服务器。在Firefox中使用Firebug时,我还检查了该文件是否作为UTF-8提供(确实如此)


有人知道我如何解决这个编码问题吗?

我要放弃这个,因为我找不到任何解决方案。email()函数也不安全,我会使用phpmailer或swiftmailer(我倾向于后者)。

$inputvalue
硬编码到脚本中,还是来自用户输入或数据库?如果我错了,请纠正我,但
htmlspecialchars()
不够吗?@pateman:no,htmlspecialchars只做
“&
,例如html元字符。将其视为mysql\u real\u escape\u string()的html等价物。htmlspecialchars()是更通用的“编码任何东西”。Marc B,对-我倾向于混淆这两个。不过,
htmlentities()
在这种情况下应该可以工作,不是吗?是的,它最初来自html输入,但两者的结果相同。filter\u far可用于去除/编码低或高ASCII字符。它还可用于验证输入,如电子邮件、int、布尔值。。。