본문 바로가기
Utils

NGUI, BBCode 태그 제거하기 (Replace)

by Client. DJ 2023. 4. 8.
반응형

BBCode

단순하게 BBCode 기능을 비활성화할 수 있지만(supportEncoding = false), 반드시 이용은 하나 유저 입력을 막고 싶은 경우가 있습니다. 정규식과 string의 Replace를 적절히 이용하면 쉽게 제거할 수 있습니다.

스크립트

public static class Utils
{
    public static string RemoveBBCode(string input)
    {
        string output = input;

        // Remove [b], [i], [u], [s], [sub], [sup] tags
        output = Regex.Replace(output, @"\[(b|i|u|s|sub|sup)\]", "");

        // Remove [url=...] tags with variable-length URLs
        output = Regex.Replace(output, @"\[url=.+?\]", "");

        // Remove [url] tags
        output = output.Replace("[url]", "");

        // Remove [00000000] ~ [FFFFFFFF] color tags
        output = Regex.Replace(output, @"\[[A-Fa-f0-9]{6,8}\]", "");

        // Remove [-] tags
        output = output.Replace("[-]", "");

        return output;
    }
}

예제

private static void Main(params string[] args)
{
    string text = "[FF00FF]color[-] [b]Bold[-]"
    label.text = Utils.RemoveBBCode(text);
    // Result 
    // text = "color Bold"
}

마무리

BBCode에서 사용되는 태그의 범위는 넓지 않으므로, 위와 같이 몇 개의 태그만 교체하는 방식으로 진행하면 됩니다. ChatGPT를 통해서 정규식 검증도 받아내고, 사용되지 않는 HTML 태그까지 알려줘서 필요한 내용에 맞게 고쳤더니 도움이 되었네요.

반응형

댓글