【发布时间】:2010-12-07 16:00:26
【问题描述】:
$filename = "Sara & I.mp3";
if (file_exists($filename)) {
...
}
如果文件名有“&”,PHP 不会为 file_exists 返回 true
如何在 $filename 中转义“&”以使file_exists 正常工作?
已经尝试过urlecode()、urlrawencode()、htmlentities(),并用反斜杠 (\&) 转义“&”...不行
ps。这是在运行 RedHat5 的 linux 系统上
提前致谢
【问题讨论】:
-
这并不能回答您的问题,但“测试并执行操作”模式使您的代码对竞争条件开放。在您致电
file_exists之后但在您致电filesize之前,有人可能会删除该文件。此外,文件存在这一事实并不意味着您有权访问它。如果您删除file_exists调用并为filesize失败做好准备,您的代码将更加健壮。 -
回到您的问题,听起来您没有正确转义/取消转义
$path。这个变量从何而来? -
Correct 无法反驳 :) 然而,这段代码只是取自我不是原作者的 wordpress 插件...
-
我试了一下,好像没问题。所以它必须是别的东西。您使用的文件系统是什么?确切的文件名是什么?提供更多使用信息。
-
@NawaMan,你到底尝试了什么?您试图在文件名中包含“&”字符的文件上 file_exists?
标签: php algorithm character filenames file-exists