Escaping Rich Text

Hey!
When working with rich text in Roblox, special characters like <, >, &, ", and ' need to be escaped to avoid being interpreted as part of the markup tags. You can use a simple function to handle this process, ensuring your text displays correctly and prevents any parsing errors.

function escape(text:string)
	return text:gsub('[&<>"\']',{
		['&'] = '&amp;',
		['<'] = '&lt;',
		['>'] = '&gt;',
		['"'] = '&quot;',
		['\''] = '&apos;',
	})
end

This function uses the gsub method to replace characters with their corresponding HTML escape codes. For example, it turns & into &amp;, < into &lt;, and so on. By using this function, you can display text containing these characters without breaking the rich text formatting.

This is especially useful when you are dealing with user-generated content, where such characters might appear in the input text. Escaping them ensures your text renders correctly, even when rich text tags are present.

Let’s assume we have user-generated text

text = 'I am cool! <'

and want to output it. Here, the escape function becomes essential when dealing with special characters like < in the string. Without escaping, the < character will be interpreted as the start of a rich text tag, causing unwanted formatting:

print(`quinacon: <font color="#ff0000">{text}</font>`)

If we instead use our escape function, we can prevent this and correctly render the text:

print(`quinacon: <font color="#ff0000">{escape(text)}</font>`)

4 Likes