编程中那些防转义和转义的技巧汇总

2023年 7月 17日 85.9k 0

大家好,我是G探险者。今天聊一聊编程中转义或者防转义的那些事儿~。

在编程过程中,我们常常需要处理特殊字符和特定上下文,以确保生成的内容在正确的环境中能够被解析和显示。有时我们需要防止转义,保留特殊字符的原始含义;而在其他情况下,我们需要进行转义,将特殊字符转换为适当的格式。本文将介绍一些常见的防转义或者转义处理的编程技巧,并提供相应的示例代码。

1. 防止转义的技巧

1.1. XML中的CDATA块

在XML文档中,使用块来将特殊字符视为纯文本,防止其被解析为XML标签或实体。这在处理包含代码片段、标签或特殊字符的文本时特别有用。

示例代码1:


    
        标签内容
            特殊字符 & 和 >
        ]]>
    

CDATA块以开头,以]]>结尾,其中的文本内容可以包含任意字符,包括特殊字符如和&等。在CDATA块中,这些特殊字符不会被解析为标签或实体,而是作为纯文本进行处理。

示例代码2:


这种写法是一种结合了Freemarker模板语法和CDATA块的表达方式。

  • : 这部分是CDATA块的开始和结束标记,用于将其包裹起来。

  • ${(data.entity)!}:这是Freemarker模板语法的一部分。在模板中,${...}用于插入变量或表达式的值。在这里,data.entity是一个变量或表达式,它的值将被插入到CDATA块中。

  • ${"]>"}:这也是Freemarker模板语法的一部分。在这里,它插入了一个特殊字符序列">",用于表示CDATA块的结束标记]]>。

  • 综合起来,这个写法的目的是将data.entity的值插入到CDATA块中,并以]]>作为结束标记。这样做的目的可能是确保data.entity的值在XML或XHTML文档中作为纯文本处理,并避免其中的特殊字符被解析为XML标签或实体。

    1.2. JSON字符串拼接

    在拼接JSON字符串时,使用转义字符,如反斜杠\,来处理特殊字符。例如,使用"来表示双引号,确保其作为字符串的一部分而不是终止符号。

    示例代码:

    String jsonString = "{\"name\": \"" + name.replaceAll("\"", "\\\\\"") + "\"}";
    

    1.3. SQL查询拼接

    在构建SQL查询语句时,使用双单引号''来表示单引号,确保其作为字符串的一部分。这样可以避免SQL解析错误或注入攻击。

    示例代码:

    String query = "SELECT * FROM users WHERE name = '" + name.replace("'", "''") + "'";
    

    1.4. HTML模板处理

    在处理HTML模板时,使用HTML实体编码来转义特殊字符,如、&等。例如,使用

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论