PHP如何自动转义和还原字符串

实例1

<head>
<metahttp-equiv="Content-Type"content="text/html; charset=gb2312">
<title>自动对字符串进行转义和还原</title>
<styletype="text/css">
<!--
body {
 background-color: #FFCCFF;
}
-->
</style></head>

<body>
<?php
 $str ="select * from tb_book where bookname = 'PHP项目开发全程实录'";
 echo $str."<br>";
 $a = addslashes($str);//对字符串中的特殊字符进行转义
 echo $a."<br>";//输出转义后的字符
 $b = stripslashes($a);//对转义后的字符进行还原
 echo $b."<br>";//将字符原义输出
?>
</body>
</html>

运行结果:

select * from tb_book where bookname = 'PHP项目开发全程实录'

select * from tb_book where bookname = \'PHP项目开发全程实录\'

select * from tb_book where bookname = 'PHP项目开发全程实录'

实例2

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html; charset=gb2312"> <title>对指定范围的字符串进行转义、还原</title> <styletype="text/css"> <!-- body {  background-color: #FFCCCC; } --> </style></head> <body> <?php $a="编程体abc’验网";//对指定范围内的字符进行转义 $b=addcslashes($a,"编程体验网");//转义指定的字符串 echo "转义字符串:".$b;//输出转义后的字符串 echo "<br>";//执行换行 $c=stripcslashes($b);//对转义的字符串进行还原 echo "还原字符串:".$c;//输出还原后的转义字符串 ?> </body> </html>

运行结果:

转义字符串:\261\340\263\314\314\345abc’\321\351\315\370

还原字符串:编程体abc’验网

运行说明

1、addslashes函数说明

string addslashes ( string $str )

返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

一个使用addslashes()的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。

强烈建议使用DBMS指定的转义函数(比如MySQL是mysqli_real_escape_string()),但是如果你使用的DBMS没有一个转义函数,并且使用\来转义特殊字符,你可以使用这个函数。

仅仅是为了获取插入数据库的数据,额外的\并不会插入。

当PHP指令magic_quotes_sybase被设置成on时,意味着插入'时将使用'进行转义。

PHP5.4之前PHP指令magic_quotes_gpc默认是on,实际上所有的GET、POST 和COOKIE数据都被addslashes()了。不要对已经被magic_quotes_gpc转义过的字符串使用addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

参数 

str

要转义的字符。

返回值 

返回转义后的字符。

2、stripslashes函数说明

string stripslashes ( string $str )

反引用一个引用字符串。

Note: 

如果magic_quotes_sybase项开启,反斜线将被去除,但是两个反斜线将会被替换成一个。

一个使用范例是使用PHP检测magic_quotes_gpc配置项的开启情况(在PHP5.4之前默认是开启的)并且你不需要将数据插入到一个需要转义的位置(例如数据库)。

例如,你只是简单地将表单数据直接输出。

参数 

str

输入字符串。

返回值 

返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\)。

3、addcslashes 函数说明

string addcslashes ( string $str , string $charlist )

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

参数

str

要转义的字符。

charlist

如果charlist中包含有 \n,\r 等字符,将以C语言风格转换,而其它非字母数字且ASCII码低于32以及高于126的字符均转换成使用八进制表示。

当定义charlist参数中的字符序列时,需要确实知道介于自己设置的开始及结束范围之内的都是些什么字符。

返回值

返回转义后的字符。

4、stripcslashes函数说明

string stripcslashes ( string $str )

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

参数 

str

需要反转义的字符串。

返回值 

返回反转义后的字符串。

来源:http://cakin24.iteye.com/blog/2348605

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, 字符串
, 函数
, 字符串反转
, 转义字符
, 字符
, 转义
, 转义字符telnet
, 字符转义
, php的addslashes
, 数据库转义字符
, c语言转义字符
, addslashes
斜线
php 字符串转义、php字符串转义函数、php mysql 字符串转义、php字符串双引号转义、php 字符串不转义,以便于您获取更多的相关知识。

时间: 2024-11-10 00:39:42

PHP如何自动转义和还原字符串的相关文章

php字符串的转义和还原

1.手动转义和还原字符串 <?php echo 'select * from emp where name=\'张三\''; ?> 输出:select * from emp where name='张三' 2.使用函数来转义和还原字符串 (1)addslashes()函数:用于为字符串加入反斜线"\" 语法: string addslashes(string str) (2)stripslashes()函数:将使用addslashes()函数转义后的字符串返回原样 语法:

PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例_php技巧

本文实例讲述了PHP中addslashes()和stripslashes()实现字符串转义和还原用法.分享给大家供大家参考,具体如下: PHP中addslashes() 函数返回在预定义字符之前添加反斜杠的字符串. 预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL stripslashes() 函数删除由 addslashes() 函数添加的反斜杠. 用法示例如下: <?php $str="select * from `book` where bookname=

ThinkPHP提交表单时默认自动转义的解决方法_php实例

本文实例讲述了ThinkPHP提交表单时默认自动转义的解决方法.分享给大家供大家参考.具体方法如下: 一.问题: 在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线. 在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线,在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不

ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法_php技巧

ThinkPHP的conf文件中的Convention.php有一个配置选项 'DEFAULT_FILTER'        =>  'htmlspecialchars', // 默认参数过滤方法 用于I函数... 默认这个方法是开启的.也就是说,我们往数据库里面存储的数据中都会经过htmlspecialchars这个函数的转义处理. 我在我的项目中使用了Kindeditor富文本编辑器(或许你使用的是Ueditor\ckeditor),通过富文本编辑器编辑文章的内容然后存储到数据库中,再从数据

ThinkPHP出现自动转义解决办法总结

这种情况是在 php.ini中的magic_quotes_gpc 开启的情况下发生的.原因是thinkphp在入库的时候没有判断 magic_quotes_gpc 是否开启,直接进行了转义处理. 我的解决办法:在baseAction中自动执行  代码如下 复制代码 public function _initialize()       {           //去除转义 不用系统的自动转义           if (get_magic_quotes_gpc()) {            

Mysql自动备份与还原方法_Mysql

一.自动备份:将以下代码保存为*.bat批处理脚本,然后再添加Windows定时作业,如每天凌晨2点执行: set s=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2% mysqldump -u root -ppassword databasename > d:\databasename_%s%_bak.sql 说明:databasename 为数据库名 password为数据库密码,系统自动以当前日期时间备份至

jdbc preparedstatement 自动转义问题

问题描述 目前正在做一套框架,需求如下,prepaerdstatement.setString 里面可以是一段sql语句代码如下: 这一段代码是由框架自动完成好的,然后目的是将这个注入到sql中,但是 prepaerdstatement 自动在整个外围添加2个单引号,所以就不能执行,因为该框架式在mybtis3的基础上进行封装的,就是需要pstmt.setString(' and 1=1 and 2=2 and 3=3 ') 这种需求;import java.sql.Connection;imp

PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)_php技巧

这样我们就可以拿此函数来做很多用途了,比如:单点登录的token加密传输啦,临时密码啦等等 复制代码 代码如下: /** * @param string $string 原文或者密文 * @param string $operation 操作(ENCODE | DECODE), 默认为 DECODE * @param string $key 密钥 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效 * @return string 处理后的 原文或者

备份校验两不误,MySQL自动备份还原校验设计详解

作者介绍 庞阔,优朋普乐传媒运维基础部经理.负责数据库运营管理及平台设计开发,监控设计改进,问题跟踪处理,机房网络维护管理,目前四个专利已在专利局申请中.擅长数据库运维管理及Shell.Perl.PHP编写.   背景   最近关于数据库故障出现的问题较多,不论大小公司对数据的备份要求都很高,但对校验数据备份的有效性要求更为迫切,很多公司对于自动备份和还原都已经形成体系,但对于还原后的备份有效性校验可能都不太完善,而且目前网上也没有较为完善的检验机制(可能我没找到).   对数据库备份的有效性校