[英]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
替換為一個正方形,表示它是無法識別的字符。 因此,發生了什么事,我無法將文件保存到常量應該指向的文件夾中。
您需要在a
和f
之前轉義反斜杠:
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.