防御SQL注入应优先用mysqli_real_escape_string()或预处理语句;addslashes()仅作备选,它转义单引号、双引号、反斜杠和NULL;addcslashes()可精确控制转义字符范围;htmlspecialchars()用于防XSS,只转义&、"、'、<、>五个字符;htmlentities()转义所有可表示的非ASCII字符。

按转义目的分类:防御SQL注入用
当字符串要拼入SQL语句时,必须阻止引号破坏语句结构。使用 【addslashes()】 是最直接的手段——它自动在单引号、双引号、反斜杠和 NULL 字符前加反斜杠。
若已启用 mysqli 扩展,优先用 mysqli_real_escape_string(),它会根据当前连接的字符集做精准转义,比 addslashes() 更安全。
注意:不要对已由 PDO::quote() 或预处理语句(prepare/execute)处理过的字符串再调用 addslashes(),否则会导致多余反斜杠残留。
按转义范围分类:手动指定字符
方法一:用 addcslashes() 精确控制哪些字符被转义。例如只转义 HTML 中危险的 < 和 >:addcslashes($str, '<>')。
立即学习“PHP免费学习笔记(深入)”;
方法二:若需转义 ASCII 控制字符(如 、
、
),addcslashes($str, "