php Одинарные и двойные кавычки вокруг строк (литералов) -- какая разница. Когда и какие сиволы нужно экранировать
Primary tabs
Одинарные и двойные кавычки -- в чем разница (PHP)
Строки с двойными и одинарными кавычками отличаются тем:
- Подстановкой переменных: в строку с двойными кавычками значение переменной подставляется, а в строчку с одинарными нет, а потому это следует учитывать, если вы хотите ускорить исполнение кода.
Экранирование символов в строках
Экранирование -- исключение "особого значения" символа с помощью добавления перед ним какого-либо иного символа.
Для экранирования спецсимволов в строках используется обратный слэш \.
Рассмотрим примеры вызовов echo() для разных литералов:
$a = 5; // присвоим переменной значение
echo('У Васи $a яблок типа "синап" '); /* -- можно ничего не экранировать,
как как внешние кавычки одинарные и больше (кроме как на границах)
внутри строки они не встречаются.
Значение переменной в литералах
в одинарными кавычками при выводе не экран не подставляется
(то есть $a выведется просто как текст)
Получим:
У Васи $a яблок типа "синап"
*/
echo('У Васи $a яблок типа \'синап\' '); /* -- тут мы вынуждены экранировать
одинарные кавычки внутри литерала, чтобы не получить ошибку,
ведь если одинарные кавычки служат границами, то нужно как-то
показывать, что внутри строки это не граница, а просто кавычка -- поэтому
символ ' внутри строки в данным случае экранируется.
Получим:
У Васи $a яблок типа 'синап'
*/
echo("У Васи $a яблок типа 'синап' "); /* -- здесь можно ничего не экранировать,
кавычки снаружи двойные
-- а потому одинарные смело можно использовать внутри строки,
так как кавычки двойные, то значение переменной подставится вместо её имени.
Получим:
У Васи 5 яблок типа 'синап'
*/
echo("У Васи $a яблок типа \"синап\" "); /* -- экранируем то,
что не является границей строки.
Значение переменной, опять же, подставляется.
Получим:
У Васи 5 яблок типа "синап"
*/
echo("У Васи \$a яблок типа \"синап\" "); /* -- экранируем знак доллара,
чтобы он воспринимался как обычный символ
-- в этом случае значение переменной не подставится.
Получим:
У Васи $a яблок типа "синап"
*/Помимо знака доллара экранировать приходится и сам обратный слэш.
- Log in to post comments
- 6284 reads