В чем разница кавычек php

Двойные и одинарные кавычки в php

Я сторонник красивого и оптимизированного кода, хоть и не всегда у меня получается следовать всем правилам «хорошего тона» в программировании.

Сейчас же речь пойдет о правильном использовании двойных и одинарных кавычек в php. Перед тем, как начать писать пост, я бегло просмотрел имеющиеся у меня книги по php, и, что странно, ни в одной не увидел правильного использования кавычек. Почему – для меня загадка. Обвинять авторов в дилетантстве нет ни малейшей возможности, книги далеко не для «чайников». Может быть просто не хотели акцентировать на этом внимание, дескать кому надо, тот сам разберется.

Кавычки, что логично, бывают одинарными и двойными. Различие их использования в php заключается в следующем. Строку, заключенную в одинарные кавычки, интерпретатор php выводит как есть, заключенную же в двойные кавычки парсит на наличие в ней переменных и, найдя таковые, подставляет их значения.

Следовательно, если нам надо вывести текст «как есть», то используем одинарные кавычки. Если необходимо подставить вместо переменной ее значение – двойные (если переменная только одна, то кавычки можно и вовсе опустить). Часто можно встретить такой код:

Выводится просто текст. Но в коде он по какой-то неведомой причине заключен в двойные кавычки, что заставляет интерпретатор парсить его на наличие переменных. Правильным будет заключить текст в одинарные кавычки.

Рассмотрим тривиальную задачу вывода переменной в составе текста, в том числе и с использованием html кода.

Все выводится хорошо, текст и выделенная жирным дата, которая подставляется вместо переменной. Но необходимо помнить две вещи. Первое, это особенность интерпретатора: конкатенация строк происходим намного быстрее и требует меньше ресурсов, нежели синтаксический анализ строк. И второе — не стоит забывать про парадигму программирования «разделяй и властвуй». Не надо мешать все в одно, гораздо правильнее будет разделить текст на две части – требующую и не требующую парсинга интерпретатором. Таким образом, пример выше стоит записать так:

Читайте также:  Css cursor no drop

Естественно, следовать этому правилу (заключать все, что не требует парсинга, в одинарные кавычки) надо не только при выводе текста, но и при присвоении значений строковым переменным:

Или, например, при использовании строк при передаче аргументов функции:

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

Источник

Строки и кавычки в PHP

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

Как PHP определяет название переменной в строке

Название переменной должно содержать в себе только цифры, буквы и нижнее подчёркивание. PHP принимает за название переменной всё, что находится между символом $ и первым не подходящим символом.

В следующем коде PHP неправильно определит название переменной и выдаст ошибку:

Notice: Undefined variable: priceруб in D:\OpenServer\domains\programulin.ru\index.php on line 3

Для корректного определения названия переменной нужно поместить её в фигурные скобки:

Нет однозначного мнения, какие кавычки нужно использовать для обычных строк, в которые ничего не нужно подставлять. Однако, многие программисты предпочитают использовать одинарные кавычки.

Дело в том, что двойные кавычки у многих вызывают ассоциацию «в эту строку что-то должно подставляться». Поэтому я рекомендую использовать одинарные кавычки для обычного текста, а двойные — только когда в текст нужно подставить переменную. Пример:

Экранирование кавычек

Если вам нужно поместить кавычки внутрь строки, есть 2 способа это сделать:

Во втором примере обратный слеш экранирует следующую за ним кавычку, чтобы PHP воспринял её как строку.

Читайте также:  Creating links in html using buttons

Как думаете, что нужно сделать, чтобы вывести на экран только обратный слеш? Ведь он будет экранировать закрывающую кавычку.

Для этого нужно написать второй слеш для экранирования первого:

Табуляция и перенос строки

Обратный слеш в двойных кавычках позволяет не только экранировать символы, но и подставлять некоторые специальные символы. Например, табуляцию (длинный пробел, который вы получаете при нажатии TAB) и перенос строки. Выглядят они следующим образом:

Напомню, что оба этих символа в HTML отображается браузерами как пробел, поэтому нет смысла пытаться вывести их напрямую. Но вы можете вывести их внутри тега textarea или записать в файл:

Задача 1

Напишите скрипт, который:
1. Создаёт переменную $type со значением Игра .
2. Создаёт переменную $name со значением «World of Warcraft» (с кавычками).
3. Выводит обе переменные внутри тега . Между переменными должен быть пробел.

Задача 2

Выведите этот текст на экран, правильно используя кавычки и экранирование (если это необходимо):

То самое 'чувство', когда кончились слова и отключена "фантазия", да ещё и кавычек " ' " напихали.
'; // Вариант 2 echo "То самое 'чувство', когда кончились слова и отключена \"фантазия\", да ещё и кавычек \" ' \" напихали.
"; // Вариант 3 echo "То самое 'чувство', когда кончились слова и отключена ",'"фантазия", да ещё и кавычек "', " ' ", '" напихали.
';

Источник

php Одинарные и двойные кавычки вокруг строк (литералов) — какая разница. Когда и какие сиволы нужно экранировать

vedro-compota's picture

Строки с двойными и одинарными кавычками отличаются тем:

  • Подстановкой переменных: в строку с двойными кавычками значение переменной подставляется, а в строчку с одинарными нет, а потому это следует учитывать, если вы хотите ускорить исполнение кода.
Читайте также:  Приватный конструктор java пример

Экранирование символов в строках

Экранирование — исключение «особого значения» символа с помощью добавления перед ним какого-либо иного символа.

Для экранирования спецсимволов в строках используется обратный слэш \.

Рассмотрим примеры вызовов echo() для разных литералов:

$a = 5; // присвоим переменной значение echo('У Васи $a яблок типа "синап" '); /* -- можно ничего не экранировать, как как внешние кавычки одинарные и больше (кроме как на границах) внутри строки они не встречаются. Значение переменной в литералах в одинарными кавычками при выводе не экран не подставляется (то есть $a выведется просто как текст) Получим: У Васи $a яблок типа "синап" */ echo('У Васи $a яблок типа \'синап\' '); /* -- тут мы вынуждены экранировать одинарные кавычки внутри литерала, чтобы не получить ошибку, ведь если одинарные кавычки служат границами, то нужно как-то показывать, что внутри строки это не граница, а просто кавычка -- поэтому символ ' внутри строки в данным случае экранируется. Получим: У Васи $a яблок типа 'синап' */ echo("У Васи $a яблок типа 'синап' "); /* -- здесь можно ничего не экранировать, кавычки снаружи двойные -- а потому одинарные смело можно использовать внутри строки, так как кавычки двойные, то значение переменной подставится вместо её имени. Получим: У Васи 5 яблок типа 'синап' */ echo("У Васи $a яблок типа \"синап\" "); /* -- экранируем то, что не является границей строки. Значение переменной, опять же, подставляется. Получим: У Васи 5 яблок типа "синап" */ echo("У Васи \$a яблок типа \"синап\" "); /* -- экранируем знак доллара, чтобы он воспринимался как обычный символ -- в этом случае значение переменной не подставится. Получим: У Васи $a яблок типа "синап" */

Помимо знака доллара экранировать приходится и сам обратный слэш.

Key Words for FKN + antitotal forum (CS VSU):

Источник

Оцените статью