本文主要是介绍PHP 格式化字符串函数:addslashes()和stripslashes(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PHP 格式化字符串以便存储:addslashes()和stripslashes()函数
除了使用字符串函数来重新格式化一个可见的字符串之外,也可以使用其中的一些函数来重新格式化字符串,以便将其存入数据库。对于字符串来说,某些字符肯定是有效的,但是当将数据插入到数据库中的时候可能会引起一些问题,因为数据库会将这些字符解释成控制符。这些有问题的字符就是引号(单引和双引)、反斜杠(\)和NULL字符。
我们需要找到一种标记或是转义它们的办法,以便使像MySQL这样的数据库能够理解我们表示的是有实际意义的特殊文本字符,而不是控制序列。为了将这些字符进行转义处理,可以在它们前面加一个反斜杠。例如,”(双引号)就变成\”(反斜杠双引号),\(反斜杠)就变成\(反斜杠反斜杠)。(这个规则对所有特殊字符都通用,所以,如果在字符串中存在\字符,就需要用\\进行替换。)
PHP提供了两个专门用于转义字符串的函数。在将任何字符串写到数据库之前,如果你的PHP的默认配置还没有启用该功能,你应该使用addslashes()将它们重新格式化,例如:
$feedback=addslashes(trim($_POST['feedback']));
和许多其他字符串函数一样,addslashes()函数需要一个字符串作为输入参数,经过该函数处理,将返回一个重新格式化后的字符串。
例子:
<?php$str = "He told me:'Hello world! but I don't have any money!'";echo $str."<br>";$str_addslashes = addslashes($str);//输出经过addslashes()处理的字符串
echo $str_addslashes."<br>";$str_stripslashes = stripslashes($str_addslashes);//输出经过stripslashes()处理的字符串
echo $str_stripslashes;?>
输出:
//未处理的字符串
He told me:'Hello world! but I don't have any money!' //输出经过addslashes()处理的字符串
He told me:\'Hello world! but I don\'t have any money!\' //输出经过stripslashes()处理的字符串
He told me:'Hello world! but I don't have any money!'
调用addslashes()后,所有引号将被加上反斜杠,而Stripslashes()会移除这些反斜杠
这个功能是由magic_quotes_gpc配置指令控制的。如今,在PHP新版本的默认安装情况下,该指令是关闭的。gpc表示GET、POST和cookie,是第一个字母的组合。这就意味着,来自这些方法或方式的变量将被自动包括在引号内。使用get_magic_quotes_gpc()函数,可以检查系统上的这个指令是否已经启用,如果来自这些方法的变量被自动引用在引号中,该函数将返回true。如果系统上该指令为启用的,在显示用户数据之前,必须调用stripslashes()函数;否则,这些反斜杠会被显示出来。
注:
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
这篇关于PHP 格式化字符串函数:addslashes()和stripslashes()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!