jQuery只转义某些html实体

时间:2015-06-26 01:37:37

标签: javascript php jquery html

我有一个简介系统,提到了

我的帖子表中的'content'值存储为:

<a href="/profile/Alice">Alice</a> Alice, you there? &lt;strong&gt;lol&lt;/strong&gt;
  • 我的系统生成a href配置文件链接(我用所有配置文件替换所有提及的配置文件)
  • &lt; strong&gt; lol&lt; / strong&gt;是我不希望显示的用户定义的HTML(我在所有用户帖子上使用htmlentities(),因此他们的html输入变为那个)

但是,最终结果是所有内容都显示为HTML(我使用json和jquery显示它们)。我怎样才能使它只显示HTML(对于我提到的链接),而不是所有用户指定的? (即&lt; strong&gt;)

我希望帖子能够在超级链接中显示提及,但与此同时,我不希望所有用户输入的html都显示为html。

我使用jQuery追加来显示我的帖子。

谢谢!

2 个答案:

答案 0 :(得分:0)

$str = '<a href="/profile/Alice">Alice</a> Alice, you there? &lt;strong&gt;lol&lt;/strong&gt;';
$str = html_entity_decode($str);
echo $str;
exit;

答案 1 :(得分:0)

如果我明白你想要什么,我想这会做到。 find("*")仅匹配HTML标记,因此标记之外的文本节点将被过滤掉。

&#13;
&#13;
var content = '<a href="/profile/Alice">Alice</a> Alice, you there? &lt;strong&gt;lol&lt;/strong&gt;';
var wrapped = $("<div>", { html: content });

$("#output").append(wrapped.find("*"));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"></div>
&#13;
&#13;
&#13;

我首先将其打包在DIV中,因为.find()只搜索子级,而不是顶级节点。