2010-03-19 10 views
9

Chcę wyrażenia regularnego w ruby ​​na szynach, które usuwają wszystkie znaczniki html i jego treść z podanego tekstu.Ruby on rails wyrażenie regularne, aby usunąć znaczniki html i jego treść z tekstu

Na przykład jeśli mój tekst jest: -input: -

<span id="span_is"><br><br><u><i>Hi</i></u></span> 

to powinno wyświetlać tylko wyjście powinno być następujące: -

Hi 

w skrócie chcę wyrażenie regularne lub funkcja które usuwają <> i niezależnie od zawartości między <>.

Dzięki & Pozdrowienia,

Salil Gaikwad

Odpowiedz

13

Twój ciąg jest dość prosty, a rozwiązanie może działać. Jednak nie powinieneś odkrywać koła na nowo. Szyny zawierają już kilka potężnych sanitization helpers.

string = '<span id="span_is"><br><br><u><i>Hi</i></u></span>' 
strip_tags(string) 
+0

aby dodać, nie usuwa znaków takich jak   :) – ravi1991

14
'<span id="span_is"><br><br><u><i>Hi</i></u></span>'.gsub(/<\/?[^>]+>/, '') 
+0

Dzięki gimmy to działa dla mnie dzięki milion. – Salil

+0

Chociaż zaakceptowana odpowiedź jest najbardziej eleganckim rozwiązaniem, to rozwiązanie faktycznie lepiej odpowiada moim potrzebom. Dziękuję Ci! –

1

Nie rób tego. Proszę.

Chociaż wprowadzanie próbek jest dość banalne, wspominasz, że chcesz go użyć w znacznie szerszym zakresie.

http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html

dla Ruby, można spróbować użyć http://hpricot.com/ do analizowania HTML zamiast.

+0

Właściwie to muszę rozwiązać mój problem, który w mojej poczcie, gdy przeglądam jako tekst, wyświetla znaczniki html. Zamień i zamień mój chat.text.plain.erb z następującymi odpowiedziami: jimmy <% = @ chat.gsub (/ <\/?[^>] +> /, '')%> i to działa dla mnie. i tak dzięki za komentarz. Salil – Salil