我认为这可能是一个愚蠢的问题,但我很困惑我是否需要在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
)吗?
答案 0 :(得分:30)
在single quoted strings中,只识别转义序列\\
和\'
; \
的任何其他事件都被解释为普通字符。
因为\M
和\U
不是有效的转义序列,所以它们会被解释为。
答案 1 :(得分:2)
在单引号字符串中,可以选择转义反斜杠,唯一的例外是在单引号或反斜杠之前(因为\'
和\\
是转义序列)。
这在编写正则表达式时很常见,因为它们往往包含反斜杠。阅读preg_replace('/\w\b/', ' ', $str)
比/\\w\\b/
更容易。
请参阅manual。
答案 2 :(得分:1)
由于您的上一个示例包含引号('
),因此您需要使用addslashes
函数转义此类字符串,或者只是在此之前自行添加斜杠:
'Application\Model\\'User'
答案 3 :(得分:0)
您可以在此处找到完整的说明: http://nl.php.net/manual/en/language.types.string.php
答案 4 :(得分:0)
我认为这取决于上下文,但如果在文件路径中使用它,则转义反斜杠是一个好主意。
另一个好主意是将目录分隔符分配给一个常量,我之前在各种应用程序中看到过,并将其用作:
<?php
define('DIRECTORY_SEPARATOR', '\\');
echo 'Application'.DIRECTORY_SEPARATOR . 'Models' . DIRECTORY_SEPARATOR . 'User';
?>
如果您希望节省空间和打字,其他人则使用DS
作为常量名称。
<?php
define('DS', '\\');
echo 'Application'.DS.'Models'.DS.'User';
?>
如果您从Windows环境移动到* nix环境,这可以使您的应用程序保持可移植性,因为您可以简单地将目录分隔符常量更改为正斜杠。
答案 5 :(得分:0)
如果要在HTML页面中使用它,则最好使用代码\来表示反斜杠,如下所示:
echo 'Application\Models\User';
它将打印:
Application \ Models \ User