2010-11-30 6 views
2

Je travaille sur Ruby on Rails 2.3.8 et j'ai un site Web dans lequel les utilisateurs tapent des messages. Chacun d'eux a une courte description qui est montrée dans la page principale. Cette description est automatiquement créée à partir de l'original, mais elle est simplement tronquée et atteint 240 caractères maximum.Supprimer par programme les images et les vidéos de html

Le problème est que ces descriptions peuvent contenir des images ou des vidéos, et je ne veux pas qu'elles apparaissent lorsque je tronque ces chaînes. J'utilise le plugin Hpricot pour analyser HTML, et l'expression régulière suivante pour analyser les images:

body = Hpricot.parse(html_body) 
body = body.to_s.gsub(/<img .*?>/, '') 

Ceci est la suppression des images, mais parfois il laisse une chaîne au lieu, par exemple, il dit « image » ou « img » où l'image était avant. Maintenant, par exemple, je vois un texte "spam" lâche restant après avoir supprimé une image de la description. Peut-être que l'expression rationnelle n'est pas correcte.

Est-ce que quelqu'un sait quelle est la bonne regex pour enlever des images, et aussi des vidéos de html?

+0

Pourquoi ne pas simplement éviter d'ajouter du code HTML dans votre contenu. Après vous pouvez faire un peu de gsub pour éviter ce que vous voulez. – shingara

+0

Évitez quoi? Je souhaite que les utilisateurs insèrent des images et des vidéos, mais celles-ci doivent apparaître dans la page du post, et non dans la courte description de la page d'accueil. –

Répondre

1

Il me semble que vous cherchez img avec un espace après il.

Ne voulez-vous pas cela afin que vous puissiez saisir le <img et tout jusqu'à >, mais ne pas saisir le >?

Difficile à dire si cela fonctionne sans entrée source.

<img([^>])+ 

ATTENTION: ne fonctionnera PAS avec les balises imbriquées.

Questions connexes