1

我计划在从我的 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("&lt;br /&gt;","<br />",$safe_echo_to_html);
    $safe_echo_to_html = preg_replace("&lt;p&gt;","<p>",$safe_echo_to_html);
    $safe_echo_to_html = preg_replace("&lt;/p&gt;","</p>",$safe_echo_to_html);
    $safe_echo_to_html = preg_replace("&lt;strong&gt;","<strong>",$safe_echo_to_html);
    $safe_echo_to_html = preg_replace("&lt;/strong&gt;","</strong>",$safe_echo_to_html);
    return $safe_echo_to_html;
}
4

3 回答 3

2

htmlspecialchars_decode:http ://www.php.net/manual/en/function.htmlspecialchars-decode.php

此函数与 htmlspecialchars() 相反。它将特殊的 HTML 实体转换回字符。

$str = "<p>this -&gt; &quot;</p>\n";

echo htmlspecialchars_decode($str);

上面的示例将输出:

<p>this -> "</p>
于 2013-02-13T13:33:44.407 回答
2

请看函数 htmlspecialchars_decode($str); 功能。

于 2013-02-13T13:35:39.027 回答
2

无需多次调用 preg_replace() 。您可以使用单个模式来匹配所有所需的标签:

preg_replace('/&lt;\s*(\/?(?:strong|p|br)\s*\/?)&gt;/i', '<\1>', $s);

当然,我假设您实际上打算使用正则表达式进行匹配。如果搜索字符串是纯文本,则 strtr() 更有效。

于 2013-02-13T13:55:37.933 回答