簡體   English   中英

我需要在 PHP 中轉義反斜杠嗎?

[英]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&#92;Models&#92;User';

它會打印:

應用程序\\模型\\用戶

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM