簡體   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