前言
在上文中,我们使用“\n”表示换行,也就是说:echo\n将输出一个换行符。那如果我们希望原样输出\n怎么办呢?
这就是今天要讲的主题:转义
什么是转义
在编程中,有大量的“特殊字符”,不仅仅包含前文说的制表符,还有很多特殊字符,比如我们想输出一个“”(双引号),用这样的语法echo,只会报错!
我们必须手动告知程序,将某个特殊字符当成普通字符处理,告知的方法就是通过:转义符。
PS:几乎所有的编程语言都需要转义符,而非PHP特有。
转义符
绝大多数情况下,它是一个“反斜杠”:\,将右侧紧邻的字符转义成普通字符,用法如下:
echo\;中间的双引号,被当成普通字符输出。
echo\\n;这个看起来有点怪,连续两个\\是什么意思?第一个\表示转义符,将第二个\转义成普通字符。
HTML中的转义字符
如果你想在网页上输出一个HTML标签,比如:比如使用转义字符,但并非\而是:。\
什么时候需要用到它?
任何时候,只要你希望原样输出“特殊字符”就要使用它。
安全问题
很多时候,特殊字符的不当使用会造成程序报错,并进一步引发安全问题。
SQL注入
select*fromtablewherename=张三上面的是很普通的SQL查询,但如果以1or1=1作为查询条件呢?
SQL语句变成了
select*fromtablewherename=1or1=1整个SQL语义产生变化,如果这是一条敏感的查询,比如管理员登陆,那么就可能造成通用密码。
这就是最古老的SQL注入:1or1,SQL注入类攻击手法多样,但是归根究底就是利用了特殊字符。
xss攻击
在数据写入的过程中,将js代码一并写入,就可以借此造成xss攻击,xss一样利用了特殊字符,所以我们也可以通过合理的转义来解决此类问题。
常用的转义函数
转载自网上的一张表格,我看写的还算完整就直接借用了。(来自cnblogs.