在PHP中,Addslashes显示为正斜杠

时间:2011-06-12 19:30:30

标签: php escaping

我的服务器上有一个我想要访问的文件。文件名为ken\'s book.doc

但在我的数据库中,它存储为ken's book.doc

(我已经修复了反斜杠问题,但仍然无法访问服务器上先前上传的文件。

我使用了addslashes来添加反斜杠,但它显示为:ken/'s book.doc(这是正斜杠而不是反斜杠。

我用过:

str_replace("'", "\'", $filename);

但它显示为正斜杠。

我该如何解决这个问题?

由于

修改

额外信息:我使用新值作为链接的一部分。那就是:

<a href="<?php echo str_replace("'", "\'", $filename);?>">View</a>

1 个答案:

答案 0 :(得分:1)

如果您的文件名包含磁盘上的反斜杠,我会先修复它。当你将这个文件名存储到数据库中时,你的第二个问题显然没有使用mysql_real_escape_string(为什么它没有反斜杠就结束了。)

addslashes btw本身不会添加正斜杠。你的故事的那部分是不真实的。要再次删除它们,您就不需要古怪的str_replace来电,只需要stripslashes

实际问题(编辑后)原来是一个HTML链接。这只是因为浏览器习惯在网址中将反斜杠转换为正斜杠。为了防止这种情况适用urlencode()

 <a href="<?=urlencode(stripslashes($filename));?>">View</a>