[英]Do I need to escape backslashes in PHP?
我需要在 PHP 中轉義反斜杠嗎?
echo 'Application\Models\User'; # Prints "Application\Models\User"
echo 'Application\\Models\\User'; # Same output
echo 'Application\Model\'User'; # Gives "Application\Model'User"
所以它是一個轉義字符。 如果我想引用Application\\Models\\User
我是否不需要轉義它( \\
)?
在單引號字符串中,只有轉義序列\\\\
和\\'
被識別; 任何其他出現的\\
被解釋為普通字符。
因此,由於\\M
和\\U
不是有效的轉義序列,因此它們被按原樣解釋。
在單引號字符串中,可以選擇轉義反斜杠,唯一的例外是它在單引號或反斜杠之前(因為\\'
和\\\\
是轉義序列)。
這在編寫正則表達式時很常見,因為它們往往包含反斜杠。 閱讀preg_replace('/\\w\\b/', ' ', $str)
比/\\\\w\\\\b/
更容易。
請參閱手冊。
由於您的最后一個示例包含引號 ( '
),您需要使用addslashes
函數對此類字符串進行轉義,或者在它之前自己添加一個斜杠,如下所示:
'Application\Model\\'User'
你會在這里找到完整的解釋: http : //nl.php.net/manual/en/language.types.string.php
我認為這取決於上下文,但如果在文件路徑中使用反斜杠,最好避開反斜杠。
另一個好主意是將目錄分隔符分配給一個常量,我之前在各種應用程序中看到過這種做法,並將其用作:
<?php
define('DIRECTORY_SEPARATOR', '\\');
echo 'Application'.DIRECTORY_SEPARATOR . 'Models' . DIRECTORY_SEPARATOR . 'User';
?>
如果您希望節省空間和輸入,其他人使用DS
作為常量名稱。
<?php
define('DS', '\\');
echo 'Application'.DS.'Models'.DS.'User';
?>
如果您從 Windows 環境移動到 *nix 環境,這將使您的應用程序保持可移植性,因為您可以簡單地將目錄分隔符常量更改為正斜杠。
如果要在 HTML 頁面中使用,那么不妨使用 HTML 字符代碼 \\ 來表示反斜杠,如下所示:
echo 'Application\Models\User';
它會打印:
應用程序\\模型\\用戶
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.