Htmlspecialchars默认设置double_encode为false


htmlspecialchars set double_encode false as default

我有一个庞大的系统,出于安全原因,我想在所有$_GET$_POST变量上执行htmlspecialchars。问题是将有重复的htmlspecialchars,而<script>将显示

&lt;script&gt;&lt;/script&gt;

是否有任何方法将double_encode false设置为默认值而不是true?

可以重写此函数,并将double_encode参数设置为默认值false。下面是示例代码:

<?php
rename_function('htmlspecialchars', 'renamed_htmlspecialchars');
function overriden_htmlspecialchars($string, $flags=NULL, $encoding='cp1251', $double_encode=false) {
    $flags = $flags ? $flags : (ENT_COMPAT|ENT_HTML401);
    return renamed_htmlspecialchars($string, $flags, $encoding, $double_encode);
}
override_function('htmlspecialchars', '$string, $flags, $encoding, $double_encode', 'return overriden_htmlspecialchars($string, $flags, $encoding, $double_encode);');
?>