2009-07-22 15 views
5

Pracuję nad aplikacją Rails i chciałbym wiedzieć, jaki jest najlepszy sposób na usuwanie bloków CSS lub JavaScript.Strip Inline CSS i JavaScript w Railsach

<style> 
... 
</style> 
    -or- 
<script> 
... 
</script> 

Używam strip_tags pomocnika zadbać o większość HTML, ale pozostawia sporo CSS, gdy zawartość zawiera inline CSS. Dziękujemy

Odpowiedz

0

Zalecanym sposobem wykonania tej czynności jest użycie metody sanitize. Metoda strip_tags jest nieco ograniczona i mniej bezpieczne:

[strip_tags] Usuwa wszystkie znaczniki HTML z HTML, tym komentarzach. Wykorzystuje to tokenizer html-skaner , a więc jego zdolność do analizowania HTML jest ograniczona przez zdolność do analizowania html-scannera .

Jeśli używasz sanitize, będziesz o wiele bezpieczniejszy, wymyślić białą listę tagów, które chcesz najpierw dopuścić.

+0

Dzięki, ale to nie rozwiąże mój problem. Chciałbym pozbyć się tagów stylu otwierania i zamykania oraz wszystkich wbudowanych stylów CSS między tymi tagami. W ten sposób zostawiam tylko zwykły tekst. –

4

spróbuje użyć Nokogiri Biblioteka:

require 'nokogiri' 

str = " ... " # some html from user 
doc = Nokogiri::HTML(str) 
doc.css("style,script").remove # remove all tags with content 
new_string = doc.to_s 

Nokogiri może znacznie więcej, ale to, co prosiłeś na pytania :-)