php - 为什么 PHP 双重转义这个字符串?

标签 php

我有一个与 PHP 版本有关的问题。

这是传入 url 的原始字符串:

?path=/2013/6/14/1371207330-SBM1_Today\'s Touch Strongsville.xls

在 PHP 5.3.21 中,当我回显 $_GET['path'] 时,它返回(错误):

/2013/6/14/1371207330-SBM1_Today\\\'s Touch Strongsville.xls

在 PHP 5.3.15 中,它返回正确的版本(correct):

/2013/6/14/1371207330-SBM1_Today\'s Touch Strongsville.xls

我该如何解决这个问题,以便更高版本的 PHP 不添加额外的转义?

致 future 的读者

该错误与 PHP 版本无关,而是两个不同 php 安装的配置。在我的例子中,我的本地版本有一个关闭了 magic_quotes 的 php.ini 配置,而客户共享托管服务提供商 (HostGator) 将其打开。

最佳答案

这是(参见 IMSoP 的评论)PHP 的可怕特性之一。它被称为“魔术引号”,可以在配置文件中启用和禁用。 Here's an article on disabling it.

简而言之,将其放入您的php.ini:

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

关于php - 为什么 PHP 双重转义这个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118510/

相关文章:

php - 检查 url 是否有效以及 php 中的有效 XML

php - ios - 使用 firebase 发送通知

php - 拉维尔 5 : Error in Sending Email

php - laravel eloquent 获取等于 1 或 0 的记录

php - cakephp:seo 友好的 url 路由 - 避免传递 url 参数

javascript - 输入时插入代码

php - 如何在 PHP 中多次在 SQL 查询中漫游

php - 插入数据库时​​将单词更改为数字

php - MySQL 读取/修改/写入字段的替代方案

phpMyAdmin:PHP fatal error - 无法重新声明 PMA_checkLink()