我目前使用此功能来清理用户提交的输入:
// Cleaning input functions
function clean_Input($input) {
$search = array(
'@<script[^>]*?>.*?</script>@si', // Strip out javascript
'@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags
'@<style[^>]*?>.*?</style>@siU', // Strip style tags properly
'@<![\s\S]*?--[ \t\n\r]*>@' // Strip multi-line comments
);
$output = preg_replace($search, '', $input);
return $output;
}
function sanitize($input) {
if (is_array($input)) {
foreach ($input as $var => $val) {
$output[$var] = sanitize($val);
}
} else {
if (get_magic_quotes_gpc()) {
$input = stripslashes($input);
}
$input = clean_Input($input);
$output = mysql_real_escape_string($input);
}
return $output;
}
但是,我想对其进行编辑,以便允许<a>
和<b>
标记通过。这意味着它将接受链接和粗体标签,并且不会删除它们。
目前,它会删除包含<a>
代码和<b>
代码的所有HTML代码,如何更改代码以完成上述内容?
如果我知道如何使用preg_replace
函数,我会尝试一些东西。但是,我完全陷入困境,并且绝对不知道从哪里开始。
答案 0 :(得分:0)
使用strip_tags是否有任何不妥之处,并将一些标签传递给允许,因此直通?为什么选择Regex?
考虑手册页上的示例:
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');