【发布时间】:2014-01-18 05:29:33
【问题描述】:
如果我可以调用my_escape($text, '<p><b><i>') 来转义除所有<p>、<b> 和<i> 标记之外的所有内容,那就太好了。我正在寻找一个通用的解决方案,我可以在其中指定任意一组标签。这存在吗?如果不是,实现它的最佳方法是什么?
【问题讨论】:
标签: php tags html-escape-characters
如果我可以调用my_escape($text, '<p><b><i>') 来转义除所有<p>、<b> 和<i> 标记之外的所有内容,那就太好了。我正在寻找一个通用的解决方案,我可以在其中指定任意一组标签。这存在吗?如果不是,实现它的最佳方法是什么?
【问题讨论】:
标签: php tags html-escape-characters
在 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;
?>
【讨论】:
你最好的选择是做这样的事情
// 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);
最好使用正则表达式,但这解释得更多。
【讨论】:
\a。
\a 是什么?如果我echo "\a" 只是\a。