如果我可以调用my_escape($text, '<p><b><i>')
除了所有<p>
,<b>
和<i>
标记之外的所有内容,那就太好了。我正在寻找一个通用的解决方案,我可以在其中指定任意一组标签。这存在吗?如果不是,那么实施它的最佳方法是什么?
答案 0 :(得分:6)
在htmlspecialchars函数中,它将html标签转换为
& to &
" to "
' to '
< to <
> to >
转换后你可以反向解码
<?php
$test="<p><b><a>Test</b></a></p>";
$test = htmlspecialchars($test);
$test = str_replace("<p>", "<p>", $test);
$test = str_replace("<i>", "<i>", $test);
$test = str_replace("<b>", "<b>", $test);
$test = str_replace("</b>", "</b>", $test);
$test = str_replace("</i>", "</i>", $test);
$test = str_replace("</p>", "</p>", $test);
echo $test;
?>
答案 1 :(得分:1)
你最好的选择是做这样的事情
// Add placeholders
$search = array('<p>', '<b>');
$replace = array("\ap\a", "\ab\a");
$text = str_replace($search, $replace, $text);
$text = htmlspecialchars($text);
// Put it all back together
$text = str_replace($replace, $search, $text);
最好使用正则表达式,但这需要更多解释。