在PHP语言中,字符串的转义与反转义是可以使用PHP提供的自有函数addslashes()函数和stripslashes()函数来实现。
1. addslashes()函数
addslashes() 函数用来在指定的字符串string添加反斜杠(\)。
语法格式如下:addslashes(string);
说明:返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
2. stripslashes()函数
stripslashes()函数用来将addcslashes() 函数添加反斜杠(\)删除返回原样。
语法格式如下:stripslashes(string);
前面我们介绍了什么是php转义与反转义字符串数据,介绍了转义符 " \ ",以及怎么使用转移符来对字符串进行转义和反转义,并使用了实例进行了说明。在这里
使用addslashes() 函数对字符串进行转义,然后在使用stripslashes()函数进行还原的实例如下:<?php
$str = "this url_name = 'PHP中文网'";
echo $str."
";
$a = addslashes($str); //对字符串进行转义
echo $a."
"; //输出转义后的字符串
$b = stripslashes($a); //对转义后的字符串进行还原
echo $b."
"; //输出还原后的字符串
?>
输出结果如下:this url_name = 'PHP中文网'
this url_name = \'PHP中文网\'
this url_name = 'PHP中文网'
注意:数据在插入数据库之前,有必要使用addcslashes() 函数对字符串进行转义,以免特殊字符未经转义而在插入数据库时出现错误。另外,对于使用addslashes() 函数实现的转义字符串使用stripslashes()函数进行还原,但数据再插入数据库之前必须再次进行转义。
说明:在缓存文件中,一般对缓存数据的值采用addcslashes() 函数进行指定范围的转义。
当要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。
addslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有自己的转义函数,那么推荐使用原装函数,比如MySQL有mysql_real_escape_string函数用来转义SQL。 注意在PHP5.3之前,magic_quotes_gpc是默认开启的,其主要是在$GET, $POST, $COOKIE上执行addslashes操作,所以不需要在这些变量上重复调用addslashes,否则会double escaping的。不过magic_quotes_gpc在PHP5.3就已经被废弃,从PHP5.4开始就已经被移除了,如果使用PHP最新版本可以不用担心这个问题。stripslashes为addslashes的unescape函数。