消除随机数据类型

时间:2013-12-11 12:22:45

标签: php xss sanitization

我在清理数据方面遇到了问题。

是否有内置的php函数来清理像htmlspecialchars / htmlenteties这样的数据,如果提供非字符串值,它会保留其原始类型。 例如:

The problem:
    $a = 1;//(int);
    $b = htmlspecialchars($a);
    var_dump($b); // string "1"
The desired effect:
    $a = 1;//(int);
    $b = htmlspecialchars($a);
    var_dump($b); // integer"1"

感谢您的时间。

3 个答案:

答案 0 :(得分:2)

$a = 1;//(int);
$b = htmlspecialchars($a);
settype($b,gettype($a));
var_dump($b); // integer"1"

结果

int(1)

答案 1 :(得分:0)

您可以先按类型检查,然后使用htmlspecialchars然后转换为类型...虽然这会违反使用htmlspecial字符。另外,我认为$a可能来自某个请求变量,在这种情况下它总是一个字符串。

听起来好像你想要一个函数来为你确定上下文。因为如果它已经被输入int,你想做什么“逃避”?

答案 2 :(得分:0)

无需在整数值上使用htmlspecialchars。

我只是得到了类型,并执行类似我在下面的代码中显示的内容,即使您稍后可以再次设置类型。

$var_type = gettype($var);

switch ($var_type)
{
    case 'integer':
         break;
    case 'string':
         $var = htmlspecialchars($var);
}

return $var;