Программно удалять изображения и видео из HTML - PullRequest
3 голосов
/ 30 ноября 2010

Я работаю над Ruby on Rails 2.3.8, и у меня есть веб-сайт, на котором пользователи пишут сообщения. У каждого из них есть краткое описание, которое показано на главной странице. Это описание автоматически составлено из оригинала, но оно просто обрезано, поэтому оно может содержать не более 240 символов.

Проблема в том, что описания могут содержать изображения или видео, и я не хочу, чтобы они появлялись при усечении этих строк. Я использую плагин Hpricot для разбора HTML и следующее регулярное выражение для разбора изображений:

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

Это удаление изображений, но иногда вместо этого он оставляет строку, например, он говорит «изображение» или «img», где изображение было раньше. Теперь, например, я вижу свободный текст со спамом после удаления изображения из описания. Может быть, это неправильное выражение.

Кто-нибудь знает, какое правильное регулярное выражение для удаления изображений, а также видео из HTML?

1 Ответ

1 голос
/ 30 ноября 2010

Мне показалось, что вы ищете img с пробелом после него.

Разве вы не хотите этого, чтобы вы могли захватить <img и все, вплоть до >, а затем захватить >?

Трудно сказать, работает ли он без исходного ввода.

<img([^>])+

ВНИМАНИЕ: НЕ будет работать с вложенными тегами.

...