【问题标题】:how to read files with spaces and special characters in their name?如何读取名称中包含空格和特殊字符的文件?
【发布时间】:2011-04-18 17:38:00
【问题描述】:

我的服务器中有很多视频,我使用以下代码来获取视频的持续时间,它工作正常..

        ob_start();
        passthru("ffmpeg -i ".$srcfile." 2>&1");
        $duration = ob_get_contents();
        ob_end_clean();

但我无法获得包含空格或任何特殊字符(如('# % 等)的文件的持续时间...

我无法重命名这些文件,因为它们已经存储了,而且这些文件的名称也存储在 db 中,并且在实时站点中更改所有内容需要付出代价..

那么有什么方法可以访问/读取带有特殊字符的文件吗?

【问题讨论】:

  • 你应该使用popen()而不是与ob_start()混在一起。

标签: php linux file


【解决方案1】:

escapeshellarg

顺便说一句,您应该始终将它用于任何 shell 参数,而不是想让应用程序对 shell 注入攻击开放,这可能非常危险。

【讨论】:

    【解决方案2】:

    在单引号之间引用文件名:

        passthru("ffmpeg -i '".$srcfile."' 2>&1");
    

    【讨论】:

    • 坏主意。如果 $srcfile 包含单引号字符怎么办?
    猜你喜欢
    • 2021-01-19
    • 2013-06-02
    • 2022-11-10
    • 1970-01-01
    • 2013-06-30
    • 2013-10-26
    • 2018-05-09
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多