我的服务器上有一个我想要访问的文件。文件名为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>
答案 0 :(得分:1)
如果您的文件名包含磁盘上的反斜杠,我会先修复它。当你将这个文件名存储到数据库中时,你的第二个问题显然没有使用mysql_real_escape_string
(为什么它没有反斜杠就结束了。)
addslashes
btw本身不会添加正斜杠。你的故事的那部分是不真实的。要再次删除它们,您就不需要古怪的str_replace
来电,只需要stripslashes
。
实际问题(编辑后)原来是一个HTML链接。这只是因为浏览器习惯在网址中将反斜杠转换为正斜杠。为了防止这种情况适用urlencode()
<a href="<?=urlencode(stripslashes($filename));?>">View</a>