【问题标题】:How to escape file names with spaces? [duplicate]如何用空格转义文件名? [复制]
【发布时间】:2016-03-14 13:18:50
【问题描述】:

我有一些包含空格的文件夹,例如:

/user/mike/abc/de fg/hi

如何转义路径以便我可以使用 php 访问它? (例如,filegetcontents glob、file_exists 等。)我试过了:

$files = glob("/user/mike/abc/de\ fg/hi/*.*");
print_r($files)  //is empty

我也尝试了 escapeshellcmd 和 escapeshellarg。

我做错了什么? (除了使用带空格的文件)

【问题讨论】:

  • @MichaelCoxon - 在那篇文章中,他们用“\”替换了空格,这就是我所做的(参见我的来源) - 不起作用。 (而且不只是glob,我想在所有php函数中打开包含空格的文件)
  • 因为您在文字中使用转义 - 它无法正常工作 - 我的猜测是它可能需要是 "/de\\ fg/h" 因为转义将被 转义 ..您可以尝试的另一件事是使用单引号,我很确定它不会逃避任何东西。即:'/user/mike/abc/de\ fg/hi/*.*'
  • @MichaelCoxon 它有效! - 谢谢! :) 我用单引号试过了,奇怪..也许是一些 php 设置。
  • 不是 PHP 设置.. 这是 PHP 的一个特性。 :)
  • 也许这可能有用:Is there a way to glob() only files?...

标签: php file escaping


【解决方案1】:

因为您在双引号文字中使用了转义 - 它无法正常工作 - 好吧,正如预期的那样。

它要么需要是"/user/mike/abc/de\\ fg/hi/*.*",因为转义会被转义。

您可以使用不转义任何内容的单引号,并完全按照您键入的方式使用字符串。即:'/user/mike/abc/de\ fg/hi/*.*'

如需进一步阅读有关可以使用字符串文字执行的操作的其他信息,请参阅:http://php.net/manual/en/language.types.string.php

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 2016-08-21
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2017-04-25
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多