Есть ли лучший инструмент для экранирования и отмены экранирования HTML, чем CGI для Ruby?

CGI.escapeHTML неплохой, а вот CGI.unescapeHTML полностью борется. Например:

require 'cgi'

CGI.unescapeHTML('…')
# => "…"                    # correct - an ellipsis

CGI.unescapeHTML('…')
# => "…"             # should be "…"

CGI.unescapeHTML('¢')
# => "\242"                 # correct - a cent

CGI.unescapeHTML('¢')
# => "¢"               # should be "\242"

CGI.escapeHTML("…")
# => "…"                    # should be "…"

Похоже, что unescapeHTML знает обо всех числовых кодах, плюс &, <, > и ". И escapeHTML знает только о последних четырех - он не выполняет никаких числовых кодов. Я понимаю, что экранирование обычно не должно быть таким надежным, поскольку HTML допускает буквальные версии большинства символов, кроме четырех, о которых знает CGI.escapeHTML. Но отмена побега действительно должна быть лучше.

Есть ли лучший инструмент, по крайней мере, для того, чтобы избежать побега?

Он не обрабатывает & mdash; либо.

Chloe 15.03.2014 05:32
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
19
1
4 977
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

require 'rubygems'
require 'hpricot'

Hpricot('&#8230;', :xhtml_strict => true).to_plain_text

Хотя, возможно, вам придется повозиться с кодировкой символов.

Используйте драгоценный камень htmlentities, а не hpricot.

Chris Lloyd 02.01.2009 05:35
Ответ принят как подходящий

Драгоценный камень htmlentities должен помочь:

require 'rubygems'
require 'htmlentities'

coder = HTMLEntities.new

coder.decode('&#8230;') # => "…"
coder.decode('&hellip;') # => "…"
coder.decode('&#162;') # => "¢"
coder.decode('&cent;') # => "¢"
coder.encode("…", :named) # => "&hellip;"
coder.encode("…", :decimal) # => "&#8230;"

Другие вопросы по теме