Как заменить <на <и> на> с помощью jquery - PullRequest
15 голосов
/ 22 июля 2011

У меня есть страница, которая является частью административной панели бэкэнда CRM. На этой странице вывод HTML происходит из некоторых функций PHP, к которым у меня нет доступа. И этот HTML автоматически превращает < и > в символы в кодировке HTML.

Таким образом, есть div, который содержит HTML-теги, такие как <br />, который преобразуется в &lt;b /&gt;

Так что мне нужно изменить его обратно на символы HTML, используя только jQuery:

&lt; до <
&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>

Ответы [ 10 ]

18 голосов
/ 24 января 2012

Пожалуйста, попробуйте это

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

, чтобы заменить эти символы глобально. Я попробовал это и работает как шарм:)

14 голосов
/ 15 октября 2013

У меня есть другое решение, чем обычное, и оно будет применяться для декодирования / кодирования HTML

Decode

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

Encode

var normalString = "<Hello>";
var enocodedText = $("<p/>").text(normalString).html();
/* this encodedText will give you "&lt;Hello&gt;" this string
12 голосов
/ 22 июля 2011

Самое простое, что можно сделать:

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

рабочий редактор / jsfiddle от Jared Farrish

4 голосов
/ 24 апреля 2014

если используется underscore.js _.unescape(string)

4 голосов
/ 22 июля 2011
$('#myDivId').text(function (i, text)
{
    return text.replace('&lt;', '<').replace('&gt;', '>');
});
3 голосов
/ 22 июня 2017

Попробуйте: -

var wrapper=$(".contentwrap").html();
  wrapper=wrapper.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
 $(".contentwrap").html(wrapper);
2 голосов
/ 06 февраля 2017

Использование $ This.html ( '...'); вместо $ This.text ( '...');

1 голос
/ 16 ноября 2016

Вы можете сделать это просто с 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;
?>
0 голосов
/ 29 мая 2019

Мне нужно было найти H1, а затем проанализировать следующий элемент, потому что я не смог использовать конкретный идентификатор, как вы. Хороший совет!

$('#sscContent').find("h1").next().each(function(){
    var $this = $(this);
    var t = $this.text();
    $this.html(t.replace('&lt;','<').replace('&gt;', '>'));
});
0 голосов
/ 01 марта 2018

Все вышеперечисленное на самом деле не работает для меня, потому что мне нужно было что-то, чтобы заменить все &lt; на <и <code>&gt; на>, а не только первый.То, что я сделал, было:

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

Просто подумал из коробки здесь.У меня это сработало, надеюсь, у тебя тоже.

...