Я пытаюсь декодировать некоторые объекты HTML, такие как '<'
становление '<'
.
У меня есть старый гем ( html_helpers ), но он, кажется, был заброшен дважды.
Любые рекомендации? Мне нужно будет использовать его в модели.
Я пытаюсь декодировать некоторые объекты HTML, такие как '&lt;'
становление '<'
.
У меня есть старый гем ( html_helpers ), но он, кажется, был заброшен дважды.
Любые рекомендации? Мне нужно будет использовать его в модели.
Ответы:
HTMLEntities может сделать это:
источник
HTMLEntities
драгоценный камень имеет дело со случаями, такими какå
и—
которыйCGI.unescapeHTML
не делает.Для кодирования символов вы можете использовать
CGI.escapeHTML
:Для их декодирования есть
CGI.unescapeHTML
:Конечно, перед этим необходимо включить библиотеку CGI:
И если вы в Rails, вам не нужно использовать CGI для кодирования строки. Есть
h
метод.источник
Я думаю, что камень Nokogiri также хороший выбор. Он очень стабилен и имеет огромное содействующее сообщество.
Образцы:
или
источник
CGI.escapeHTML
возможно, не удалось решить некоторые случаи. С другой стороны, если вам нужен полный набор поддержки, я уверен, чтоNokogiri
это хороший выбор.CGI::escapeHTML
не избегает немецких символов, таких как äöüß, а может и больше ... С Nokogiri я еще не проверял, но это было бы плюсом.Для декодирования символов в Rails используйте:
Так,
будет выводить
источник
#raw
ничего не декодирует Это говорит представлению не кодировать строку. Это делается путем переноса строки в aActiveSupport::SafeBuffer
, которая в свою очередь имеет флаг (html_safe?
), установленный в значение true. Представление использует этот флаг, чтобы определить, что строка может быть вставлена непосредственно в HTML без экранирования. Мне нравится воспринимать программистаhtml_safe
как указание на то, что рассматриваемая строка уже правильно экранирована.Если вы не хотите добавлять новую зависимость только для того, чтобы сделать это (например
HTMLEntities
), и вы уже используете ееHpricot
, она может как выйти, так и удалиться. Он обрабатывает гораздо больше, чемCGI
:источник
Вы можете использовать
htmlascii
драгоценный камень:источник
источник