我计划使用下面的自定义函数,同时从我的mysql表中获取数据&将其打印为html。由于htmlspecialchars()将标签转换为html实体,我将它们(p,br,strong)重新转换为标签。
我的问题是:它是否足够有效或是否有其他更短或更有效的方法来实现这一目标?如果您知道,请告诉我至少关键字?我可以在php.net和这个网站上查看详细信息。
谢谢,问候
function safe_output_from_mysql($safe_echo_to_html)
{
$safe_echo_to_html = mb_convert_encoding($safe_echo_to_html, 'UTF-8', mb_detect_encoding($safe_echo_to_html));
$safe_safe_echo_to_html = htmlspecialchars($safe_echo_to_html, ENT_QUOTES, "UTF-8");
$safe_echo_to_html = preg_replace("<br />","<br />",$safe_echo_to_html);
$safe_echo_to_html = preg_replace("<p>","<p>",$safe_echo_to_html);
$safe_echo_to_html = preg_replace("</p>","</p>",$safe_echo_to_html);
$safe_echo_to_html = preg_replace("<strong>","<strong>",$safe_echo_to_html);
$safe_echo_to_html = preg_replace("</strong>","</strong>",$safe_echo_to_html);
return $safe_echo_to_html;
}
答案 0 :(得分:2)
htmlspecialchars_decode:http://www.php.net/manual/en/function.htmlspecialchars-decode.php
此函数与htmlspecialchars()相反。它将特殊HTML实体转换回字符。
$str = "<p>this -> "</p>\n";
echo htmlspecialchars_decode($str);
以上示例将输出:
<p>this -> "</p>
答案 1 :(得分:2)
请参阅函数htmlspecialchars_decode($ str);功能
答案 2 :(得分:2)
无需多次调用preg_replace()。您可以使用单个模式匹配所有需要的标记:
preg_replace('/<\s*(\/?(?:strong|p|br)\s*\/?)>/i', '<\1>', $s);
当然,我假设您实际上正计划使用正则表达式进行匹配。如果搜索字符串是直接文本,则strtr()更有效。