C#中HTML字符转换函数分享


在C#中,HTML字符的转换通常涉及将特定的字符(如`<`, `>`, `&`, `"`, `'`等)转换为它们的HTML实体编码形式,以避免在HTML文档中造成潜在的解析问题或XSS攻击。以下是一个简单的C#函数示例,用于将字符串中的这些特殊字符转换为HTML实体编码:


using System.Text.RegularExpressions;
using System.Web; // 注意:在.NET Core或.NET 5/6/7等版本中,可能需要NuGet包Microsoft.AspNetCore.WebUtilities或类似的

public class HtmlUtilities
{
    // 这是一个静态方法,用于将字符串中的HTML特殊字符转换为HTML实体
    public static string HtmlEncode(string input)
    {
        // 对于.NET Framework项目,可以直接使用HttpUtility.HtmlEncode
        // 但在.NET Core或更高版本中,可能需要引入其他库
        // 这里为了演示,我们假设使用的是.NET Framework或已经引入了必要的库
        return HttpUtility.HtmlEncode(input);

        // 如果你不想依赖HttpUtility,也可以使用正则表达式手动实现
        // 但请注意,这通常不如内置方法那么健壮和高效
        // 下面是一个简化的手动实现示例(不推荐用于生产环境):
        // return Regex.Replace(input, "&", "&")
        //             .Replace("<", "<")
        //             .Replace(">", ">")
        //             .Replace("\"", """)
        //             .Replace("'", "'"); // 注意:单引号不是所有HTML标准都支持的实体,但在这里为了完整性而包含
    }
}

// 使用示例
string myHtmlString = "<div>Hello & World's!</div>";
string encodedString = HtmlUtilities.HtmlEncode(myHtmlString);
Console.WriteLine(encodedString); // 输出: <div>Hello & World's!</div>

请注意,在.NET Core或更高版本中,`System.Web.HttpUtility` 类可能不再直接可用,因此你可能需要引入其他库,如`Microsoft.AspNetCore.WebUtilities`,或使用.NET Core/NET 5+中提供的等效功能。

此外,对于简单的HTML编码需求,使用内置的`HttpUtility.HtmlEncode`方法通常是最佳实践,因为它已经过优化且能够处理大多数常见情况。如果你有特殊需求或想要完全控制编码过程,那么可能需要编写自己的编码逻辑,但请注意保持代码的健壮性和效率。