Dagi3d v4

Eliminar etiquetas html

Aquí va una pequeña función para eliminar las etiquetas html de una cadena de texto, pudiendo indicar en un array cuales sí queremos permitir:

class Html

  def Html.strip_tags(text, tags)

    text = text.dup
    text.gsub!(/(<(\w+)(\s+[^>]+)?>)(.*?)(<\/\2>)/) {
      if (tags.include?($2.downcase))
        $1 + $4 + $5
      else
        $4
      end
    }

    text.gsub!(/(<(\w+)(\s+[^>]+)?>)/) {
      if (tags.include?($2.downcase))
        $1
      end
    }

    text
  end
end
Html.strip_tags("<h3>título</h3> <strong>texto de prueba</strong>",
   ["strong", "em"])
=> título <strong>texto de prueba</strong>

Skiter
27/01/2006 10:38

Nos explicas a los mortales analfabetos que es un poco mas generalmente esta funcion??

Para limpiar un Source html y quedarnos solo con el texto???

Es Java??Java Script??Otros??

dagi3d
28/01/2006 03:26

El lenguaje usado es ruby y la función sirve para eliminar el código html no deseado de una cádena de texto. El comportamiento vendría a ser el mismo(al menos esa es la idea) que la función strip_tags de PHP: http://es2.php.net/strip_tags

Un posible escenario para usarlo podría ser este blog(de hecho lo es face-smile.png): si permitiese que colasen cualquier tipo de código html dentro de los comentarios, alguien con ‘mala follá’ podría insertar código javascript ‘porculero’ o insertar imágenes de 3000 pixels y descojonar todo el blog.

Ahora bien, no pasa nada si insertan las típicas etiquetas de strong, em, etc. (tengo pendiente indicarlo dentro del formulario de los comentarios), así que las etiquetas permitidas las indico al llamar a la función y cualquier otra que no esté en ese grupo, se eliminan

Deja un comentario
*: campos obligatorios. La dirección de correo no será publicada