【问题标题】:jQuery escape certain html entities onlyjQuery 仅转义某些 html 实体
【发布时间】:2015-06-26 01:37:37
【问题描述】:

我有一个小小的个人资料系统,里面有提及

我的 Posts 表中的“内容”值存储为:

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

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

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

我使用 jQuery append 来显示我的帖子。

谢谢!

【问题讨论】:

  • 您能解释一下您帖子中使用的术语吗? “我的数据库中的消息”是否与“用户帖子”相同?您如何定义/检测“提及”? “仅显示 HTML”是什么意思?那里有语法错字吗?
  • @light 嘿,我现在试着解释得更好。
  • 我仍然不明白“提及”是如何生成/检测的。也不明白你所说的看似语法错误的“显示在 HTML 中”是什么意思。此外,还有一个新的“由我的系统生成”。 什么生成了?
  • @light 道歉,该部分没有显示,因为我包含了一个 html 标签并且它被隐藏了。我也尝试过重新解释。很抱歉!
  • 要在您的问题中添加内联代码,请将它们括在反引号中 `

标签: javascript php jquery html


【解决方案1】:
$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;

【讨论】:

  • 这里好像不行。也许我应该更清楚 - 我希望我的 jQuery 只显示 html 例如 而不是像 < 这样的- 因为这些 htmlentities 是用户指定的,而 由系统完成并且可以安全显示。
【解决方案2】:

如果我明白你想要什么,我想这会做到的。 find("*")只匹配HTML标签,所以标签外的文本节点被过滤掉了。

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("*"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"></div>

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

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 2012-12-27
    • 2022-09-24
    • 1970-01-01
    • 2013-12-04
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多