在PHP编程的过程中,常常会碰着这样的问题,将数据插入到数据库中时可能引起一些问题,涌现缺点或者乱码等,
由于数据库将传入的数据中的字符阐明成掌握符。针对这样的问题,须要对分外的字符进行转义。
因此,在PHP措辞中供应了专门处理这些问题的技能,通过addslashes()函数和stripslashes()函数转义和还原字符串。
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,... 八进制以及十六进制的描述。