2009-07-22 18 views
5

Estoy trabajando en una aplicación de Rails y me gustaría saber cuál es la mejor manera de quitar bloques de CSS o JavaScript.Strip Inline CSS and JavaScript in Rails

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

estoy usando los strip_tags ayudante para hacerse cargo de la mayor parte del HTML, pero deja un montón de CSS cuando el contenido contiene CSS en línea. Gracias

Respuesta

0

La forma recomendada de hacerlo es utilizando el método sanitize. El método strip_tags es algo limitado y menos seguro:

[strip_tags] Tiras todas las etiquetas HTML desde el html, incluyendo comentarios. Esto usa el tokenizer html-scanner y por lo tanto su capacidad de análisis HTML está limitada por la de html-scanner.

Si usa sanitize, será mucho más seguro, solo obtenga una lista blanca de etiquetas que piensa permitir primero.

+0

Gracias, pero eso no va a resolver mi problema. Me gustaría deshacerme de las etiquetas de estilo de apertura y cierre, además de todas las CSS en línea entre esas etiquetas. De esta manera solo me queda texto sin formato. –

4

Trate de usar la biblioteca Nokogiri:

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 puede mucho más, pero esto es lo que solicitó en preguntas :-)