В PHP я должен выйти из обратных косых черт?

Я думаю, что это может быть глупым вопросом, но я вполне смущен, должен ли я выйти из обратной косой черты в PHP.

echo 'Application\Models\User'; prints Application\Models\User
echo 'Application\\Models\\User'; same output
echo 'Application\Model\'User'; gives Application\Model'User

Таким образом, это - символ ESC, не были должны, я должен выйти из него (\) если я хочу обратиться к Application\Models\User?

18
задан Gumbo 5 August 2010 в 14:34
поделиться

5 ответов

В строках в одинарных кавычках распознаются только escape-последовательности \\ и \ '; любое другое вхождение \ интерпретируется как простой символ.

Так как \ M и \ U не являются допустимыми escape-последовательностями, они интерпретируются как есть.

31
ответ дан 30 November 2019 в 07:38
поделиться

В строках с одинарными кавычками экранировать обратную косую черту необязательно. единственное исключение - когда он перед одинарной кавычкой или обратной косой чертой (потому что \ ' и \\ - escape-последовательности).

Это обычное дело при написании регулярных выражений, поскольку они обычно содержат обратную косую черту. preg_replace ('/ \ w \ b /', '', $ str) легче читать, чем / \\ w \\ b / .

См. Руководство .

2
ответ дан 30 November 2019 в 07:38
поделиться

Поскольку ваш последний пример содержит цитату ( '), вам нужно экранировать такие строки с помощью функции addlashes или просто добавив косую черту самостоятельно перед этим следующим образом:

'Application\Model\\'User'
1
ответ дан 30 November 2019 в 07:38
поделиться

Вы найдете полное объяснение здесь: http://nl.php.net/manual/en/language.types.string.php

0
ответ дан 30 November 2019 в 07:38
поделиться

Я думаю, это зависит от контекста, но это хорошая идея - экранировать обратные слеши, если использовать их в путях к файлам.

Другая хорошая идея - присвоить разделителю каталогов константу, что я уже видел в различных приложениях, и использовать ее следующим образом:

<?php
define('DIRECTORY_SEPARATOR', '\\');

echo 'Application'.DIRECTORY_SEPARATOR . 'Models' . DIRECTORY_SEPARATOR . 'User';
?>

Если вы хотите сэкономить место и набрать текст, другие используют DS для имени константы.

<?php
define('DS', '\\');

echo 'Application'.DS.'Models'.DS.'User';
?>

Это сохраняет переносимость приложения при переходе из среды Windows в среду *nix, так как вы можете просто изменить константу-разделитель каталогов на прямую косую черту.

0
ответ дан 30 November 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: