tengo una pequeña duda con expresiones regulares, estoy haciendo un
proyecto
en Rails donde necesito limpiar un código html de caracteres que no sean
letras , pero exceptuando los ; y los &,
ya que necesito que los caracteres de html escapados queden en el codigo
por
ej un " más"
¿alguna idea?
tengo una pequeña duda con expresiones regulares, estoy haciendo un proyecto
en Rails donde necesito limpiar un código html de caracteres que no sean
letras , pero exceptuando los ; y los &,
ya que necesito que los caracteres de html escapados queden en el codigo por
ej un " más"
¿alguna idea?
tengo una pequeña duda con expresiones regulares, estoy haciendo un
proyecto en Rails donde necesito limpiar un código html de
caracteres que no sean letras , pero exceptuando los ; y los &, ya
que necesito que los caracteres de html escapados queden en el
codigo por ej un " más" ¿alguna idea?
Mi recomendación sería que no lo hagas con expresiones regulares.
Este es el tipo de problema que parece más sencillo de lo que
formalmente es.
Si tenés que quitar el HTML hacelo con un parser completo de HTML, por
ejemplo: Hpricot[1].
Si luego, tenés que codificar el texto a entidades HTML, usá
HTMLEntities[2] (o algo parecido; html_escape de ActionPack hace
demasiado poco para lo que querés).
El día 2 de octubre de 2008 0:03, Adrián Mugnolo [email protected]
escribió:> Si tenés que quitar el HTML hacelo con un parser completo de HTML, por
ejemplo: Hpricot[1].
Si luego, tenés que codificar el texto a entidades HTML, usá
HTMLEntities[2] (o algo parecido; html_escape de ActionPack hace
demasiado poco para lo que querés).
Asi es, estoy usando hpricot para acceder al html y extraer el html de
paginas,
Les explico un poco de que se trata:
saco los metatags , links y parrafos de la pagina examinada, Los que son
tags ‘script’,‘css’,‘link’,‘style’ quedan como tags ignorados;
luego el html que queda, lo llimpio con la siguiente expresion:
No acabo de entender la cosa del todo, pero conoces hpricot y lo estas
usando al menos en parte del problema, asi que voy a por la expresion
regular. Seria algo asi:
str.gsub(/[^\w&;]/, ‘’)
La clave es [^…] que significa “todo lo que NO este en esta clase de
caracteres”.
Con el $KCODE railero á, ö, ß, ç, etc. pertenecen a \w, pasan el
filtro, y quedan en el tag.
Si solo quisieras ASCII en los tags puedes o bien normalizar antes
(busca un mail de Aitor sobre “parameterize” en los archivos):
Un parser hay que usarlo casi seguro, pero creo que hay que esperar a
que defina un poco mejor el problema con el ejemplo que envie ya que
no se ha dicho nada de limpiar tags HTML. Se quieren limpiar
no-letras.
Yo sospecho que se quiere limpiar el contenido de algun modo, es
decir, dejar la estructura intacta y limpiar el texto. Hay que ver si
es esto y si cosas como acentos o signos de puntuacion han de pasar,
ya que letras no son. Tambien hay que ver que se hace con JavaScript,
handlers, anchors, comentarios HTML, etc.
No acabo de entender la cosa del todo, pero conoces hpricot y lo estas
usando al menos en parte del problema, asi que voy a por la expresion
regular. Seria algo asi:
str.gsub(/[^\w&;]/, ‘’)
Esto era lo que necesitaba
str.parameterize.gsub.(/[^a-zA-Z0-9&;]/, ‘’)
o bien perderlos.
muchas gracias
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.