Asp.Net Html 清理库在 256 个字符后添加换行

Mat*_*und 2 asp.net sanitization newline

结果来自

Sanitizer.GetSafeHtmlFragment("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nunc tellus, consectetur eget blandit euismod, pharetra a libero. In pretium, sem sed mollis hendrerit, libero metus condimentum tellus, eget adipiscing odio ligula at velit. Nulla luctus nisl quis sem venenatis ut suscipit mauris posuere.")
Run Code Online (Sandbox Code Playgroud)

将在 256 个字符后的第一个空格处添加换行符,因此“quis sem venenatis ut suscipit mauris posuere”。将在其自己的行上。

有人对如何纠正或避免这种情况有任何建议吗?

问候,马蒂亚斯

Mat*_*und 5

答案非常简单,我们只需用标记字符串替换现有的换行符,进行清理,删除所有已出现的换行符并将预先存在的换行符放回去。

    static string newlinemarker = Guid.NewGuid().ToString();

    public static string Sanitize(string html)
    {
        //Change newlines to marker strings
        string escapedHtml = html.Replace(Environment.NewLine, newlinemarker);
        string sanitized = Sanitizer.GetSafeHtmlFragment(escapedHtml);
        //Text should not contain newlines so if the sanitizer has added any they can be removed
        sanitized = sanitized.Replace(Environment.NewLine, "");
        //Put newline back
        sanitized = sanitized.Replace(newlinemarker, Environment.NewLine);
        return sanitized;
    }
Run Code Online (Sandbox Code Playgroud)

问候,马蒂亚斯