在PHP编程的过程中,常常会碰着这样的问题,将数据插入到数据库中时可能引起一些问题,涌现缺点或者乱码等,

由于数据库将传入的数据中的字符阐明成掌握符。
针对这样的问题,须要对分外的字符进行转义

因此,在PHP措辞中供应了专门处理这些问题的技能,通过addslashes()函数和stripslashes()函数转义和还原字符串

php转义字符PHP 转义还原字符串 Docker

addslashes()函数用来给字符串str加入斜线"\",对指定字符串中的字符进行转义。

它可以转义的字符包括:单引号"'"、双引号"""、反斜杠"\"、NULL(\0)。
语法如下:

string addslashes ( string str) 参数str为将要被操作的字符串。

提示:addslashes()函数常用的地方便是在天生SQL语句时,对SQL语句中的部分字符进行转义。

既然有转义,就该当有还原。
stripslashes()函数将addslashes()函数转义后的字符串str还原。
stripslashes()函数语法:

string stripslashes(string str);参数str为将要被操作的字符串。

例如:运用addcslashes()函数对字符串进行转义,然后运用stripslashes()函数进行还原,代码如下:

<?php$str = "select from tb_book where bookname = 'PHP编程'";$a = addslashes($str); //对字符串中的分外字符进行转义echo $a."<br>"; //输出转义后的字符$b = stripslashes($a); //对转义后的字符进行还原echo $b."<br>"; //将字符原义输出?>

运行结果为: select from tb_book where bookname = \'PHP编程\'

select from tb_book where bookname = 'PHP编程'

至于addslashes()函数如何对null(\0)转义问题

<?php$str = "select from tb_book where bookname = '\0'";echo $str."<br>";$a = addslashes($str); //对字符串中的分外字符进行转义echo $a."<br>"; //输出转义后的字符$b = stripslashes($a); //对转义后的字符进行还原echo $b."<br>"; //将字符原义输出?>

运行的结果为:

select from tb_book where bookname = ''

select from tb_book where bookname = \'\0\'

select from tb_book where bookname = ''

addcslashes — 以 C 措辞风格利用反斜线转义字符串中的字符

string addcslashes ( string $str , string $charlist )

返回字符串,该字符串在属于参数 charlist列表中的字符前都加上了反斜线。

<?phpecho addcslashes ( 'foo[ ]' , 'A..z' );// 输出:\f\o\o\[ \]// 所有大小写字母均被转义// ... 但 [\]^_` 以及分隔符、换行符、回车符等也一并被转义了。
?>

stripcslashes — 反引用一个利用 addcslashes() 转义的字符串

string stripcslashes ( string $str )

返回反转义后的字符串。
可识别类似 C 措辞的 \n,\r,... 八进制以及十六进制的描述。