![]() |
replace words to be bold for each search word
I have two strings:
The first string with dynamic content: @string = "this is the example of the text" The second one includes search words: @search = "example text" How can I do that it prints the search words with bold? Result: this is the <b>example</b> of the <b>example</b> -- Posted via http://www.ruby-forum.com/. |
Re: replace words to be bold for each search word
Thanks for your answer.
I have now tried, but it only sets the first search word bold not the others. I´m a newbie for this and don´t know what the problem can be... /regards, mark -- Posted via http://www.ruby-forum.com/. |
Re: replace words to be bold for each search word
Mark Toth wrote:
> Thanks for your answer. > I have now tried, but it only sets the first search word bold not the > others. > > I´m a newbie for this and don´t know what the problem can be... > > /regards, > > mark I want to correct myself. It works for every search words, but they have to be directly after each other. It works for example: text = "This is an example text." search = "example text" # here are "example text" bold but not for: text = "This is an example of the text." search = "example text" # here is only "example" bold Any idea? Regards, Mark -- Posted via http://www.ruby-forum.com/. |
Re: replace words to be bold for each search word
Well I´m using it together with some ajax search from a database.
Here´s my code: search_controller.rb ======================= def live_search $KCODE = 'latin1' @code = $KCODE a1 = "%" a2 = "%" @searchstring_name_temp = params[:searching] @searchstring_name = @searchstring_name_temp.rstrip.gsub(" ", "%' AND name LIKE '%") @searchstring_sku_temp = params[:searching] @searchstring_sku = @searchstring_sku_temp.rstrip.gsub(" ", "%' AND sku LIKE '%") @results = Product.find_by_sql("SELECT * FROM products WHERE name LIKE'"+a1+@searchstring_name+a2+"' OR sku LIKE'"+a1+@searchstring_sku+a2+"' order by name asc LIMIT 0,50;") # @results = Product.find_by_sql(:all, :conditions => [ "name LIKE ?", a1+@searchstring+a2], :limit => 50) @number_match = @results.length render(:layout => false) end def highlight(text,search_string) keywords = search_string.squeeze.strip.split(" ").compact.uniq matcher = Regexp.new( '(' + keywords.join("|") + ')' ) highlighted = text.gsub(matcher) { |match| "<b>#{match}</b>" } return highlighted end live_search.rb ================ <%= @searchstring %> <% if @results.empty? %> not found! <% else %> found <b><%= @number_match %></b> time(s)!<BR> <% @text = "This is an example of the text." @search = "example text" %> <%= highlight(@text,@search) %> <table width=600 cellspacing="3"> <td width="100"><h2>sku</td><td width="500"><h2><b>name</td> <% @results.each do |row| %> <tr> <td> <%= highlight(row.sku.capitalize,@searchstring_name_te mp) %> </td> <td> <%= highlight(row.name.capitalize,@searchstring_name_t emp) %> </td> <% end %> </table> <% end %> -- Posted via http://www.ruby-forum.com/. |
| All times are GMT. The time now is 10:15 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.