2010-11-30 14 views
2

Ich arbeite an Ruby on Rails 2.3.8 und ich habe eine Website, in der Benutzer Beiträge eingeben. Jeder von ihnen hat eine kurze Beschreibung, die auf der Hauptseite angezeigt wird. Diese Beschreibung wird automatisch aus dem Original erstellt, aber sie wird nur abgeschnitten und erreicht maximal 240 Zeichen.Programmatisch entfernen Bilder und Videos von HTML

Das Problem ist, diese Beschreibungen können Bilder oder Videos enthalten, und ich möchte nicht, dass sie angezeigt werden, wenn ich diese Zeichenfolgen abschneide. Ich verwende Hpricot Plugin HTML zu analysieren, und der folgende reguläre Ausdruck Bilder zu analysieren:

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

Dies wird Bilder zu entfernen, aber manchmal läßt es einen String statt, zum Beispiel des „Bild“ oder „img“, sagt wo das Bild vorher war. Jetzt sehe ich zum Beispiel einen losen "Spam" -Text, nachdem ich ein Bild aus der Beschreibung gelöscht habe. Vielleicht ist die Regex nicht korrekt.

Weiß jemand, welches ist die richtige Regex zum Entfernen von Bildern und Videos aus HTML?

+0

Warum vermeiden Sie nicht einfach fügen Sie einige HTML in Sie Inhalt. Nachdem Sie einige Multi-Gub tun können, um zu vermeiden, was Sie wollen. – shingara

+0

Meiden was? Ich möchte, dass Benutzer Bilder und Videos einfügen, aber diese sollten auf der Seite des Beitrags und nicht in der kurzen Beschreibung auf der Startseite sichtbar sein. –

Antwort

1

Es scheint mir, dass Sie nach img mit einem Raum danach suchen.

Wollen Sie nicht so, dass Sie die <img und alles bis auf die > greifen und dann die > greifen können?

Schwer zu sagen, wenn es ohne Quelleneingabe funktioniert.

<img([^>])+ 

ACHTUNG: funktioniert NICHT mit verschachtelten Tags.

Verwandte Themen