Próbuję zdekodować niektóre elementy HTML, takie jak '<'
stawanie się '<'
.
Mam stary klejnot ( html_helpers ), ale wydaje się, że został porzucony dwukrotnie.
Jakieś rekomendacje? Będę musiał użyć go w modelu.
Próbuję zdekodować niektóre elementy HTML, takie jak '&lt;'
stawanie się '<'
.
Mam stary klejnot ( html_helpers ), ale wydaje się, że został porzucony dwukrotnie.
Jakieś rekomendacje? Będę musiał użyć go w modelu.
Odpowiedzi:
HTMLEntities może to zrobić:
źródło
HTMLEntities
klejnot zajmuje się przypadkami takimi jakå
i—
któreCGI.unescapeHTML
nie.Aby zakodować znaki, możesz użyć
CGI.escapeHTML
:Aby je zdekodować, dostępne są
CGI.unescapeHTML
:Oczywiście wcześniej musisz dołączyć bibliotekę CGI:
A jeśli jesteś w Railsach, nie musisz używać CGI do kodowania łańcucha. Jest
h
metoda.źródło
Myślę, że klejnot Nokogiri to również dobry wybór. Jest bardzo stabilny i ma ogromną społeczność.
Próbki:
lub
źródło
CGI.escapeHTML
być może nie uda się rozwiązać niektórych spraw. Z drugiej strony, jeśli potrzebujesz pełnego zestawu wsparcia, jestem pewien, żeNokogiri
to dobry wybór.CGI::escapeHTML
nie ucieka przed niemieckimi postaciami, takimi jak äöüß, a może więcej ... Z Nokogiri jeszcze nie sprawdziłem, ale byłby to plus.Aby zdekodować znaki w Railsach, użyj:
Więc,
wyszedłby
źródło
#raw
niczego nie dekoduje. Mówi widokowi, aby nie kodował łańcucha. Odbywa się to poprzez zawijanie łańcucha wActiveSupport::SafeBuffer
, który z kolei ma flagę (html_safe?
), ustawioną na true. Widok używa tej flagi do ustalenia, że ciąg może być wstrzykiwany bezpośrednio do HTML bez ucieczki. Lubię myśleć ohtml_safe
tym, że programista wskazuje, że omawiany ciąg znaków został już poprawnie zmieniony.Jeśli nie chcesz dodawać nowej zależności tylko po to, aby to zrobić (np.
HTMLEntities
), A już używaszHpricot
, może ona dla Ciebie zarówno uciec, jak i odinstalować. Obsługuje znacznie więcej niżCGI
:źródło
Możesz użyć
htmlascii
klejnotu:źródło
źródło