Кто-нибудь знает, как преобразовать специальные символы HTML
в Javascript
?
Пример:
&
(амперсанд) становится&
."
(двойная кавычка) становится,"
еслиENT_NOQUOTES
не установлено.'
(одинарная кавычка) становится'
только тогда, когдаENT_QUOTES
установлена.<
(меньше чем) становится<
.>
(больше чем) становится>
.
javascript
Джин Ён
источник
источник
Ответы:
Вам нужна функция, которая делает что-то вроде
Но с учетом вашего желания разной обработки одинарных / двойных кавычек.
источник
/g
в регулярном выражении означает «глобальный». Проще говоря, все вхождения строки будут заменены. Без/g
единого первого матча заменили бы.На мой взгляд, лучший способ - использовать встроенную в браузер функцию escape-последовательности HTML для обработки многих случаев. Для этого просто создайте элемент в дереве DOM и задайте
innerText
для элемента свою строку. Затем получитеinnerHTML
элемент. Браузер вернет строку в кодировке HTML.Тестовый забег:
Вывод:
Этот метод экранирования HTML также используется библиотекой Prototype JS, хотя и отличается от приведенного мной упрощенного примера.
Примечание. Вам все равно придется самостоятельно экранировать кавычки (двойные и одинарные). Вы можете использовать любой из методов, описанных здесь другими.
источник
delete el
это ошибка. perfectionkills.com/understanding-delete<>&
но не настолько всеобъемлющее, как решения Neotropic или KooiInc.output = $('<div>').text(input).html()
Эта универсальная функция кодирует каждый не алфавитный символ в свой html-код (числовой):
источник
<>&
var iC = str.charCodeAt(i)
Из Mozilla ...
Лучшее решение
Пример использования:
источник
Создайте функцию, которая использует строку
replace
источник
Для тех, кто хочет декодировать код целочисленного символа, например,
&#xxx;
внутри строки, используйте эту функцию:ES6
источник
источник
Как уже упоминалось,
dragon
самый чистый способ сделать этоjQuery
:источник
Результат:
В теге testarea:
Если вы просто измените немного символов в длинном коде ...
источник
В
PRE
теге - и в большинстве других тегов HTML - простой текст для пакетного файла, в котором используются символы перенаправления вывода (<и>), нарушит HTML, но вот мой совет : все, что входит вTEXTAREA
элемент, - это не нарушит HTML, главным образом потому, что мы находимся внутри элемента управления, созданного и обрабатываемого ОС, и поэтому его содержимое не анализируется механизмом HTML.В качестве примера предположим, что я хочу выделить синтаксис моего командного файла с помощью javascript. Я просто вставляю код в текстовое поле, не беспокоясь о зарезервированных символах HTML, и заставляю скрипт обрабатывать
innerHTML
свойство текстового поля, которое вычисляет текст с замененными зарезервированными символами HTML соответствующими объектами ISO-8859-1.Браузеры автоматически экранируют специальные символы, когда вы извлекаете свойство
innerHTML
(иouterHTML
) элемента. Использование текстового поля (и кто знает, может быть, ввод текста) просто избавляет вас от преобразования (вручную или с помощью кода).Я использую этот трюк, чтобы проверить свою подсветку синтаксиса, и когда я закончу разработку и тестирование, я просто скрываю текстовое поле из поля зрения.
источник
Если вам нужна поддержка всех стандартизированных ссылок на именованные символы , юникода и неоднозначных амперсандов , библиотека he - единственное на 100% надежное решение, о котором я знаю!
Пример использования
источник
обходной путь:
источник
Еще один, который мы используем сейчас, работает. Один выше у меня вместо этого вызывает скрипт и возвращает преобразованный код. Хорош только для небольших текстовых полей (имеется в виду не полная статья / блог и т. Д.)
Для выше. Работает на большинстве символов.
Я создаю файл javascript, который имеет множество функций, включая перечисленное выше. http://www.neotropicsolutions.com/JSChars.zip
Все необходимые файлы включены. Я добавил jQuery 1.4.4. Просто потому, что я видел проблемы в других версиях, но еще не опробовал их.
источник
вы можете просто преобразовать специальные символы в HTML, используя приведенный выше код.
источник
Вот хорошая библиотека, которую я нашел очень полезной в этом контексте.
https://github.com/mathiasbynens/he
По словам его автора:
источник
Вот несколько методов, которые я использую без использования JQuery:
Вы можете закодировать каждый символ в своей строке:
Или просто выберите основные символы безопасной кодировки, о которых нужно беспокоиться (&, inebreaks, <,>, "и '), например:
источник
источник
Это не дает прямого ответа на ваш вопрос, но если вы используете
innerHTML
, чтобы писать текст внутри элемента, и вы столкнулись с проблемами кодирования, просто используйтеtextContent
, то есть:источник
Мы можем использовать javascript
DOMParser
для преобразования специальных символов.источник
Ниже приведена простая функция для кодирования escape-символов xml в JS.
Encoder.htmlEncode (unsafeText);
источник
Вы можете исправить это, заменив функцию .text () на .html (). он работает для меня.
источник
используйте это для проверки: http://www.w3schools.com/js/tryit.asp?filename=tryjs_text
источник
Да, но если вам нужно куда-то вставить получившуюся строку без ее обратного преобразования, вам необходимо сделать:
источник
См. JavaScript htmlentities http://phpjs.org/functions/htmlentities:425
источник
Используйте функцию javaScript escape () , которая позволяет кодировать строки.
например,
источник
источник