我有一个MySQL结果,我想使用PHP安全地输出,即将特殊字符(如<
)转换为<
。
filter_var_array工作正常,只是NULL
值变成空字符串''
。
我仍然希望它们为NULL,以便反映MySQL值并使用is_null()
等进行测试。
$sql_rows = filter_var_array($sql_rows, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
foreach ($sql_rows as $sql_row) {
print '<li>' . $sql_row['name'] . '</li>';
}
有什么方便的方法可以实现这一点吗?
$sql_rows = array_map(function($val){
return is_null($val) ? null : filter_var($val, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
}, $sql_rows);
根据我的经验,当从MySQL中选择NULL值时,PHP将其解释为空白字符。我只会在一个循环中处理和输出每一行;您将能够更好地控制每个值发生了什么,并且效率也会更高。
foreach($sql_rows as $sql_row)
{
$output = "<li>";
if(!empty($sql_row['name']))
{
$output .= htmlspecialchars($sql_row['name'], ENT_QUOTES);
}
else
{
$output .= "<strong>NULL</strong>";
}
$output .= "</li>";
echo $output;
}