PHP在引号前面添加反斜杠的原因及PHP去除反斜杠的办法

昨天用PHP做了个读写html文档的小程序,本地测试正常但是传到网站后发现,提交内容保存的时候会自动在双引号前面增加一个反斜杠“\”,而且每保存一次增加一个反斜杠,很是郁闷。

当然做这个只是为了参加电商圈的网站进行更新,因为懒得装cms和博客程序了,就直接用php在线修改html文档来更新文字吧。

从网上搜了一下原来是PHP程序为了防止注入或者溢出,通过PHP 指令 magic_quotes_gpc自动在双引号、单引号、反斜杠、NULL前面添加反斜杠“\”。

但是我们为了读写html文档,里面自然有很多引号和双引号,这时候就要去掉添加的反斜杠。

默认PHP 指令 magic_quotes_gpc是on的,也就是打开的。这时候就可以用stripslashes() 函数删除自动添加的反斜杠。用法就是:比如包含字符串的变量是$str,那么就用stripslashes() 函数处理一下这个字符串:stripslashes($str),输出的结果就是去掉反斜杠的。

于是我就把读取的字符串内容用stripslashes()函数处理一下,即$str=stripslashes($str),再保存。上传网站之后正常了。

但是又出现另外一个问题,那就是因为本地PHP 指令 magic_quotes_gpc是off的,如果用这个函数的话,就会把本来正常的反斜杠也去掉了。这样就不是我们所希望的了。

解决办法就是可以使用函数 get_magic_quotes_gpc() 进行检测,如果是打开的状态,那么就去除反斜杠,如果是关闭的状态,则不去除反斜杠。

程序代码如下:

$str=$_POST["str"];//读取str的内容赋值给$str变量

if(get_magic_quotes_gpc())//如果get_magic_quotes_gpc()是打开的

{
$str=stripslashes($str);//将字符串进行处理

}

修改之后的程序在本地和网站上测试都正常了。

时间: 2024-09-30 04:25:43

PHP在引号前面添加反斜杠的原因及PHP去除反斜杠的办法的相关文章

php 加反斜杠的原因与处理办法

php程序加反斜杠的原因就是要进行特殊字符的转义. 默认PHP 指令 magic_quotes_gpc是on的,这时候就可以用stripslashes() 函数删除自动添加的反斜杠. 用法就是:stripslashes($str),输出的结果就是去掉反斜杠的. php实例代码如下: $str=$_POST[“str”];//读取str的内容赋值给$str变量 if( get_magic_quotes_gpc() ){ //如果get_magic_quotes_gpc()是打开的 $str=str

1. 今天添加SDK报错的原因

今天郁闷至极,真机调试时,昨天建好的工程文件一大早来就无法识别手机,还报一大堆的错,后来下午实在没办法,把工程件删了,重新见一个工程,这下竟然没报错了,但是一添加sdk文件进里面去又报错,我日,直接快让我崩溃了,我当时采用的是直接用"Add Files to xxx", 后来才知道这样添加编译器找不到文件,而是要用到Build Phases ->compile sources--添加文件:   link binary with libraries 添加静态库.然后就解决问题了.

ios8 UITableViewCell添加view出现错乱的原因

ios8 UITableViewCell添加view出现错乱的原因: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath返回的高度小于44,解决的办法只需高度大于44就哦了.

解决AndroidKiller APK 反编译失败,无法继续下一步源码反编译!

报错背景 今天使用AndroidKiller V1.3.1,反编译一个APK,遇到如下报错: 当前 Apktool 使用版本:Android Killer Default APKTOOL 正在反编译 APK,请稍等... >I: 使用 ShakaApktool 2.0.0-20150914 >I: 正在加载资源列表... >I: 反编译 AndroidManifest.xml 与资源... >I: 正在从框架文件加载资源列表: C:\Users\lijie01\apktool\fr

uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?

那就要从URI[1]的结构来看了 scheme:[//[user:[email protected]]host[:port]][/]path[?query][#fragment] 可以看到,如果有host的时候,前面是要加 // 的,因此对于 http 等这些网络地址来讲 http://www.baidu.sb:80/ad/cash 写成这样很自然.那么如果是文件呢?文件因为没有 host 啊,所以中间的部分就不要了,那么就变成了 file:///ad/cash 对于文件来讲,似乎 // 不要也

MVC4怎样在cshtml的引号内添加变量?

@{int i = 0;} @foreach (var item in Model) { i++; <tr> <td style="text-align:center">@item.SortCode</td> <td style="text-align:center">@item.GROUP_CD</td> <td style="text-align:center">@ite

Oracle&gt;&gt;通过PL/SQL程序块判断,指定用户的指定数据表和序列是否存在,如果存在则删除,否则新创建。并且为表添加含有字符串数据,execute immediate执行insert语句中有字符串解决办法

--变量声明 declare num0 number; num1 number; begin --判断用户为:SYSTEM的数据库中是否存在相关数据表和序列,存在则删除,不存在则新创建,DBMS_OUTPUT.put_line等同java中的System.out.println输出语句 DBMS_OUTPUT.put_line('正在初始化数据库信息,请稍后......'); --以下参数说明: --所涉及到的参数值必须为大写 --sequence_owner:指定哪个数据库用户的序列: seq

Eclipse添加Android library错误的原因

http://blog.csdn.net/icyfox_bupt/article/details/17141571 这两天把项目从本地转移到GIT上,本来我的Workspace是在D盘,现在因为感觉D盘不够用,就把GIT到的项目放到E盘了 按照以往的用法,GIT下来以后再往属性里添加依赖库就OK了,但是这次怎么也无法成功,一直是红叉 查询发现一个解释 http://cysnake.com/android-library-project-eclipse-bug/ 即在windows下项目必须和li

linux系统无法添加用户帐号的原因分析

生产环境配置: 操作系统: CentOS 6.6 1.产生的问题: 在使用useradd命令添加帐号(的)时候出现"seradd:cannotopen /etc/passwd" [[email protected] ~]#useradd -d /home/wwwroot/ftupuser -g ftp-s/sbin/nologin ftpuser useradd: cannotopen /etc/passwd 2.产生的原因: a)添加"i"隐藏属性后,就无法更动这