【问题标题】:javascript escape HTML within code tagjavascript在代码标签中转义HTML
【发布时间】:2011-03-12 19:03:13
【问题描述】:

基本上我需要能够在 块中搜索标签“”并将它们设置为 TEXT 而不是 HTML,以便我可以在页面上显示所有标签和 HTML。

目前,当我使用 jQuery 进行字符串替换时,所有标签都作为页面上的实际 HTML 出现:

var text = $("#edit").val();
filter = text.replace(/</gi,"&lt;").replace(/>/gi,"&gt;");
$("#output").html(filter);

我不能将 html() 更改为 text() 因为任何 HTML,在块之外都可以。我基本上正在寻找与此文本框/代码标签想法在stackoverflow上的工作方式非常相似的东西。

有没有使用 JavaScript / jQuery 的简单方法?

谢谢

【问题讨论】:

  • 我有点困惑。您将text 中出现的所有&lt;&gt; 替换为相应的HTML 实体。因此,您以某种方式在 text 文字中制作 every 标记。那你为什么不使用$("#output").text(text)呢? text 中没有 HTML 标记要呈现。我想说的是,你给出的不使用text() 的理由没有道理。还是我错过了什么?
  • 不建议使用正则表达式来解析 HTML - 看到这个(著名的!)帖子stackoverflow.com/questions/1732348/…JS 非常擅长解析 HTML ;)

标签: jquery html string escaping


【解决方案1】:

我建议解析 HTML 并使用 text() 方法来显示您的 code 块。像这样的东西怎么样

var text = $($('#edit').val()); //create HTML object and parse as you would DOM
var code = text.find('code').html();
$('#output').text(code);

显然,您必须将代码块之前和之后的所有内容作为 HTML 放入您的 output div 中。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我认为你最好使用 PHP 正则表达式来提取代码标签之间的代码并将它们显示在前置标签中以去除格式:

    <?php
    $var="blahblah<code>...</code>booboo";
    $var=ereg_replace("<code>(.*?)</code>", "", $var);   
    print "<pre>$var</pre>";
    ?>
    

    【讨论】:

    • 这个问题与 PHP 无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2010-10-16
    • 2023-03-24
    相关资源
    最近更新 更多