繁体   English   中英

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

[英]Accessing a defined constant returns messed up characters

奇怪的是我有一个这样定义的常量:

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

但是,当我尝试访问代码中的常量时,在本地主机上却得到了这个奇怪的结果。

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

\\f替换为一个正方形,表示它是无法识别的字符。 因此,发生了什么事,我无法将文件保存到常量应该指向的文件夹中。

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

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

否则,它们被解释为转义码,因为它们在字符串中。 (就像\\n是换行符,等等)。

您可以并且可能应该仅在文件/目录路径中使用正斜杠( / )。 当使用字符串作为文件路径时,PHP会将它们自动转换为与系统相关的内置常数DIRECTORY_SEPARATOR的值。 这是迄今为止最跨平台的方法。

或者,您可以使用单引号。 它们对反斜杠( \\ )进行插值的方式有所不同,因为大多数转义都被忽略,只是按字面意义进行解释(例外为\\\\\\' )。

#                                                       *
define('RJ_FILES_PATH', RJ_SITE_DIRECTORY.'\assets\files\\');
# * still need an escape here because of \'

您应该通过将其倍增来避免反冲:\\我认为,您始终应该使用'/',因为它在Windows和Linux中可以正常工作。 在php中,有一个常量DIRECTORY_SEPARATOR,但这是不必要的,因为'/'工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM