在Windows上的file_exists()中使用DIRECTORY_SEPARATOR

meo*_*hia 4 php

var_dump(DIRECTORY_SEPARATOR) // string '\' (length=1)
var_dump(file_exists("C:/1212.txt")); // true
var_dump(file_exists("C:\1212.txt")); // false
var_dump(file_exists("C:".DIRECTORY_SEPARATOR."1212.txt")); // false
Run Code Online (Sandbox Code Playgroud)

怎么DIRECTORY_SEPARATOR办?使用时为什么上述情况为假DIRECTORY_SEPARATOR

Ale*_*nov 11

DIRECTORY_SEPARATOR做什么?

DIRECTORY_SEPARATOR等于"/"(Unix)或"\"(Windows),具体取决于平台.

为什么DIRECTORY_SEPARATOR上面的情况是假的?

因为在双引号字符串中"\123"转换为"Q"(PHP手册中的更多细节).

构建Windows路径时,应该转义反斜杠:"C:\\1212.txt"或使用单引号字符串:'C:\1212.txt'.

更好更干净的方法是"/"直接在路径字符串中使用Unix目录分隔符硬编码(没有任何常量),它在Windows下工作正常:"C:/1212.txt".


Rob*_*itt 9

什么时候来PS- Path Separators这是给你的小费:

Linux /仅支持

Windows支持\/

所以我的建议是做出一切 /

define('DS','/'); //Should work.
Run Code Online (Sandbox Code Playgroud)

如果你构建你的应用程序是跨平台的,那么想想这样做.

define('DS','/');
define('BASE_ROOT',str_replace('\\',DS,dirname(__FILE__)));
require_once BASE_ROOT . DS . 'includes' . DS . 'init.php';
Run Code Online (Sandbox Code Playgroud)

然后它应该在两个平台上都很好用.

学习:

http://en.wikipedia.org/wiki/Filename

http://en.wikipedia.org/wiki/Path_(computing)