DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
Close Forgotten HTML Tags Easily In User HTML Input
If you let users type raw HTML into your input boxes, they will inevitably forget to close some of their tags from time to time. Close any forgotten tags with this:
h1 = {}
h2 = {}
code.scan(/\<([^\>\s\/]+)[^\>\/]*?\>/).each { |t| h1[t[0]] ? h1[t[0]] += 1 : h1[t[0]] = 1 }
code.scan(/\<\/([^\>\s\/]+)[^\>]*?\>/).each { |t| h2[t[0]] ? h2[t[0]] += 1 : h2[t[0]] = 1 }
h1.each {|k,v| code += "</#{k}>" * (h1[k] - h2[k].to_i) if h2[k].to_i < v }






Comments
Snippets Manager replied on Wed, 2007/11/07 - 9:20pm
def close_tags(text) open_tags = [] text.scan(/\<([^\>\s\/]+)[^\>\/]*?\>/).each { |t| open_tags.unshift(t) } text.scan(/\<\/([^\>\s\/]+)[^\>]*?\>/).each { |t| open_tags.slice!(open_tags.index(t)) } open_tags.each {|t| text += "" } text end