如何使用 jquery 将 < 替换为 < 和 > 替换为 >

Posted

技术标签:

【中文标题】如何使用 jquery 将 < 替换为 < 和 > 替换为 >【英文标题】:How To Replace &lt; with < and &gt; with > using jquery 【发布时间】:2011-10-10 16:54:24 【问题描述】:

我有一个属于后端 CRM 管理面板的页面。在该页面上,html 输出来自一些我无法访问的 php 函数。并且该 HTML 会自动将 &amp;lt;&amp;gt; 更改为 HTML 编码字符。

所以有一个 div 包含像 &lt;br /&gt; 这样的 html 标签被转换成 &amp;lt;b /&amp;gt;

所以我需要只使用 jQuery 将它改回 HTML 字符:

&amp;lt;&amp;lt;&amp;gt;&amp;gt;

是否有一个 jQuery 脚本可以用来将这些特殊字符替换为相应的符号?这意味着我的 HTML 标记将真正起作用,并且 HTML 将在屏幕上正确显示?

我已经尝试过removewith(),但我无法成功。

添加: 我试图修改的 div 是这个

<div style="font-size: 11px; width: 90%; font-family: Tahoma;" id="cotiz">&lt;strong&gt;Valuación&lt;/strong&gt; de InfoAuto: 35.500,00&lt;br /&gt; 
Cotización Seleccionada: Ninguna&lt;br /&gt; 
Allianz, Responsabilidad Civil: $205,25&lt;br /&gt; 
Allianz, Terceros Completos: $278,85 </div>

【问题讨论】:

碰巧,你是用.text()而不是.html()插入数据吗? How do I find and replace HTML entities with jQuery? 的可能重复项 @genesis - 请注意上述评论中的大小写。 ;) 这是一些邪恶的东西 【参考方案1】:

我需要一步一步找到一个 H1 然后解析下一个元素,因为我无法像你那样使用特定的 ID。好建议!

$('#sscContent').find("h1").next().each(function()
    var $this = $(this);
    var t = $this.text();
    $this.html(t.replace('&lt;','<').replace('&gt;', '>'));
);

【讨论】:

【参考方案2】:

以上所有内容都对我不起作用,因为我需要的是将所有 &amp;lt; 替换为 &gt; 替换为 > ,而不仅仅是第一个。 我所做的是:

.split('&lt;').join('<').split('&gt;').join('>');

只是在这里开箱即用。 它对我有用,我希望它也对你有用。

【讨论】:

【参考方案3】:

试试这个:-

var wrapper=$(".contentwrap").html();
  wrapper=wrapper.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
 $(".contentwrap").html(wrapper);

【讨论】:

【参考方案4】:

使用 $this.html('...'); 反而 $this.text('...');

【讨论】:

【参考方案5】:

你可以用php简单地做到这一点

<?php
$a =
 '<div style="font-size: 11px; width: 90%; font-family: Tahoma;" id="cotiz">&lt;strong&gt;Valuación&lt;/strong&gt; de InfoAuto: 35.500,00&lt;br /&gt; 
Cotización Seleccionada: Ninguna&lt;br /&gt; 
Allianz, Responsabilidad Civil: $205,25&lt;br /&gt; 
Allianz, Terceros Completos: $278,85 </div>';

$b = html_entity_decode($a);


echo $b;
?>

【讨论】:

该问题专门说使用jquery!请先把问题通读一遍!【参考方案6】:

请试试这个

.replace(/&lt;/g, '<').replace(/&gt;/g, '>') 

全局替换这些字符。我试过了,效果很好:)

【讨论】:

【参考方案7】:

如果使用underscore.js存在_.unescape(string)

【讨论】:

【参考方案8】:

我有与常规不同的解决方案,它将应用于 html 的解码/编码

解码

var encodedString = "&lt;Hello&gt;";
var decodedText = $("<p/>").html(encodedString).text(); 
/* this decodedText will give you "<hello>" this string */

编码

var normalString = "<Hello>";
var enocodedText = $("<p/>").text(normalString).html();
/* this encodedText will give you "&lt;Hello&gt;" this string

【讨论】:

你有一个普通的 javascript 替代品吗?【参考方案9】:

最简单的做法是

$('#test').each(function()
    var $this = $(this);
    var t = $this.text();
    $this.html(t.replace('&lt','<').replace('&gt', '>'));
);

working edit/jsfiddle by Jared Farrish

【讨论】:

不完全。 jsfiddle.net/XS5kY 注意,出于演示目的,我已经修复了上述问题。 我看到它在那个 jsfiddle 演示上工作,但它在我的设置上不起作用......顺便说一句,div 引用是正确的。可能是什么问题? @sebas:我不知道。在您的问题中向我们展示您的整个#test 元素 刚刚发布了您的 jquery 由于某种原因无法在我的设置中修改的 div。 抱歉再次编辑了问题,请检查 div,因为它与我在 html 代码中看到的完全一样,其中包含我需要转换为 的特殊字符【参考方案10】:
$('#myDivId').text(function (i, text)

    return text.replace('&lt;', '<').replace('&gt;', '>');
);

【讨论】:

以上是关于如何使用 jquery 将 < 替换为 < 和 > 替换为 >的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 将完整的 html 锚点替换为另一个 html 锚点

如何使用 JQuery 在不移动页面的情况下将 div 的整个视图替换为另一个 div

传统网站如何搭建Vue(jquery替换)

如何使用 Vuejs 替换这个 jquery 代码?

如何在使用 jQuery 进行 ajax 请求后替换页面的整个 CSS?

为 jQuery 使用 .text() 方法时如何保持换行符?