Php glob()是否总是使用目录分隔符返回文件路径?

Php glob()是否总是使用目录分隔符返回文件路径?,php,Php,我没有可以测试此功能的Windows box,也找不到任何相关文档,因此我想问: 当我运行glob('/path/to/files/*.txt')时,它返回如下数组: [ '/path/to/files/foo.txt' '/path/to/files/bar.txt' ] 我只需要文件名,所以我要: foreach (glob('/path/to/files/*.txt') as $file) { $fileName = substr($file, strrpos($file

我没有可以测试此功能的Windows box,也找不到任何相关文档,因此我想问:

当我运行
glob('/path/to/files/*.txt')
时,它返回如下数组:

[
  '/path/to/files/foo.txt'
  '/path/to/files/bar.txt'
]
我只需要文件名,所以我要:

foreach (glob('/path/to/files/*.txt') as $file) {
    $fileName = substr($file, strrpos($file, DIRECTORY_SEPARATOR) + 1);
    ...
}
它通过查找最后一个斜杠后的所有内容来确定文件名。我使用了DIRECTORY_SEPARATOR而不是“/”,因为我假设在windows上数组看起来像

[
  '\path\to\files\foo.txt'
  '\path\to\files\bar.txt'
]

这是真的吗?有人能确认常量目录分隔符总是与
glob()
results中的分隔符匹配吗?

正如VolkerK和Barmar在评论中指出的那样,正确答案是“没关系”,因为我应该使用php的有用函数,而不是字符串hacks。

正确答案,正如VolkerK和Barmar在评论中指出的那样,“这没关系”,因为我应该使用php的有用函数而不是字符串破解。

使用
foreach(glob('c:\\develope\\\*')…
我得到
c:\develope\Apache24 c:\develope\Java
等等,但是使用
foreach(glob('c:/develope/*'))…
c:/develope/Apache24 c:/develope/Java使用PHP5.6.14/win10-所以我猜答案是“不”;-)你考虑过使用or或spl吗?很有趣。如果你使用了
glob('c:\\develope/*')
那会把它搞糊涂。
c:\develope/Apache24
foreach(glob('c:\\develope\\\\*')…
我得到
c:\develope\Apache24 c:\develope\Java
等等,但是使用
foreach(glob('c:/develope/*')…
我得到
c:/develope/Apache24 c:/develope/Java
使用PHP5.6.14/win10-所以我猜答案是“否”;-)你考虑过使用or或spl吗?很有趣。如果你使用了
glob('c:\\develope/*'),会怎么样
那会把它搞糊涂的。
c:\develope/Apache24