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
- 5530 reads