дезинфекцирайте проблема със скъпоценни камъни с и

Използвам sanitize gem https://github.com/rgrove/sanitize, за да премахна някои HTML тагове от струна.

Въпреки това, преди дезинфекция на низа в моя контролер, низът се задава, както следва:

<p>This is &lt;b&gt;bold&lt;/b&gt; and this <span style="text-decoration: underline;">is</span> &lt;i&gt;italics&lt;/i&gt; ok? This <em>is not </em>a problem.</p>

което означава, че ‹ и > се заменят с &lt; и &gt;.

Как мога да използвам sanitize gem, за да премахна например и, когато тези етикети са представени като &lt;i&gt; и &lt;/i&gt; в контролера?


person Usering    schedule 04.12.2011    source източник
comment
Не съм сигурен, че разбирам вашия английски. Какъв е нежеланият резултат, който получавате?   -  person Trip    schedule 04.12.2011


Отговори (1)


Ако искате екранираните HTML тагове (‹ и ›) да се третират като HTML за целите на дезинфекция, тогава ще трябва първо да премахнете екранирането им:

require 'cgi'
Sanitize.clean(CGI.unescapeHTML(your_string))
person Richard Hulse    schedule 04.12.2011
comment
Благодаря за помощта @Richard Hulse. Въпреки това не срещам друг проблем: Escaped HTML: ‹p›pPARAGRAPH/p‹/p› Unescaped HTML (с помощта на CGI.unescapeHTML(escaped_html)): ‹p›‹p›PARAGRAPH‹/p›‹/p› Sanitized HTML (с помощта на Sanitize.clean(unescaped_html, :elements =› ['a', 'p', 'b', 'ul', 'ol', 'li', 'strong'])): ‹p›‹/ p›‹p›PARAGRAPH‹/p› Някаква идея защо има ‹/p› след началния ‹p›? Знам, че това може да не е валиден HTML, но искам да запазя реда на таговете. Благодаря - person Usering; 05.12.2011
comment
Sanitize Gem е изграден върху Nokogiri, което означава, че ще затвори всички незатворени етикети автоматично. Първият ‹p› се разглежда като незатворен етикет. Последният допълнителен затварящ етикет се разглежда като излишен. Ако трябва да работите с HTML, който не валидира, вероятно ще трябва да напишете свой собствен парсер (което не е задача, която трябва да се приема леко). :-) - person Richard Hulse; 06.12.2011
comment
Може би @Richard Hulse може да ми помогне с друг проблем, свързан със санирането? stackoverflow.com/questions/8405189 / Благодаря - person Usering; 06.12.2011
comment
Сигурен. Ако това е правилният отговор, можете ли да го отбележите като такъв. - person Richard Hulse; 06.12.2011