这很奇怪我有一个常量定义如下:
define("RJ_FILES_PATH", RJ_SITE_DIRECTORY."\assets\files\\");
但是当我尝试在代码中访问常量时,我在localhost上得到了这个奇怪的结果..
C:\wamp\www\my.app\assetsiles\2688
\f
被一个方块取代,表示它是一个无法识别的字符。发生什么事,因为我无法将文件保存到常量应该指向的文件夹。
答案 0 :(得分:3)
您需要在a
和f
之前转义反斜杠:
define("RJ_FILES_PATH", RJ_SITE_DIRECTORY."\\assets\\files\\");
否则它们被解释为转义码,因为它们在字符串中。 (就像\n
是换行符一样,等等。)
答案 1 :(得分:1)
你可以 - 并且可能应该 - 在文件/目录路径中使用正斜杠(/
)。当使用字符串作为文件路径时,PHP将自动将它们转换为内置系统相关常量DIRECTORY_SEPARATOR
的值。这是迄今为止最跨平台的方法。
或者,您可以使用单引号。它们以不同方式插入反斜杠(\
),因为大多数转义都被忽略,只是按字面解释(例外为\\
和\'
)。
# *
define('RJ_FILES_PATH', RJ_SITE_DIRECTORY.'\assets\files\\');
# * still need an escape here because of \'
答案 2 :(得分:0)
你应该通过加倍来消除反弹: 在我看来,你总是应该使用'/',因为它在windows和linux中运行良好。在PHP中,有一个不变的DIRECTORY_SEPARATOR,但它是不可能的,因为'/'工作正常。