访问已定义的常量会返回混乱的字符

时间:2010-09-28 07:09:03

标签: php

这很奇怪我有一个常量定义如下:

define("RJ_FILES_PATH", RJ_SITE_DIRECTORY."\assets\files\\");

但是当我尝试在代码中访问常量时,我​​在localhost上得到了这个奇怪的结果..

C:\wamp\www\my.app\assetsiles\2688

\f被一个方块取代,表示它是一个无法识别的字符。发生什么事,因为我无法将文件保存到常量应该指向的文件夹。

3 个答案:

答案 0 :(得分:3)

您需要在af之前转义反斜杠:

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,但它是不可能的,因为'/'工作正常。