Php как вывести кавычки или

Разница между двойными и одинарными кавычками в PHP

Какой вид кавычек использовать для оформления строк — апострофы или классические двойные кавычки?

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

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

Причина здесь проста: строки в двойных кавычках интерпретатор PHP дополнительно проверяет на наличие переменных и если такие находятся, то вместо имени переменной в строку вставляется ее значение. А вот строка, заключенная в апострофы, воспринимается интерпретатором как обычный текст и никаких преобразований в этих строках PHP не проводит. Думаю, понятно, что обработка строк в одинарных кавычках в любом случае будет происходить быстрее.

Для начала опишем способы определения строки, а затем проверим, насколько быстрее будет происходить обработка строк в одиночных кавычках.

Самый простой способ определить строку — это заключить ее в одинарные кавычки (‘). Для того, чтобы использовать одинарные кавычки внутри строки, заключенного в одинарные кавычки, их необходимо опередить символом обратной косой черты (\), то есть экранировать. Если обратная косая черта должна идти перед одинарной кавычкой или быть в конце строки, вам необходимо продублировать ее. Если попробуете экранировать любой другой символ, обратная косая черта также будет напечатана.

Читайте также:  Пластиковые окна с улицы пожелтели как отбелить

Приведем пример использования одинарных кавычек:
Если строка заключена в двойные кавычки («), PHP распознает большее количество управляющих последовательностей для специальных символов а также подставляет вместо имени переменной в строку ее значение. Так же, как и с одинарными кавычками, для того, чтобы использовать двойные кавычки внутри строки, заключенного в двойные кавычки, их необходимо опередить символом обратной косой черты (\).

Приведем пример использования двойных кавычек:
Следует также помнить, что последовательность «\n» (новая строка), «\r» (возврат каретки) для обычного текста, а не для HTML. Так что в браузере Вы не увидите изменений (только в исходном коде страницы).

Давайте выясним, насколько быстрее одинарные кавычки двойных. Для замеров напишем короткий тестовый скрипт, и сразу заметим, что если Вы у себя будете его тестировать, результаты, которые зависят от аппаратной части вашего ПК или сервера, будут другие.
Результат: 0.09 секунды.

Если мы заменим одинарные кавычки на двойные:
Результат будет равен 0.10 секунды.

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

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

Когда сервер обрабатывает код, он проверяет все содержимое двойных кавычек на наличие переменных, констант и другое. Это занимает время. А то, что находится между одинарными кавычками сервер обрабатывает как готовый текст и ему все равно, что там находится. Разница между быстродействием одинарных и двойных кавычек очень незначительная, но если Вы будете заниматься разработкой высоко нагруженного проекта, то несколько сэкономленных миллисекунд — это уже победа.

Источник

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

Кавычки в PHP

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

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

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

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

Результат в браузере:

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

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

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

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

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

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

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

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

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

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

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

Задача 1

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

. Между переменными должен быть пробел.

Задача 2

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

Источник

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

Вы, наверное, заметили, что php-строка обозначается то одинарными, то двойными кавычками. Дело в том, что всё, что находится в одинарных кавычках, интерпретируется просто как последовательность символов, как текст.

Если же php-строка обозначается двойными кавычками, то вместо переменных будут выводиться значения этих переменных. Поэтому если в строке есть переменные, то в качестве внешних кавычек лучше применять двойные кавычки.

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

Третий уровень кавычек

Если внутри одинарных кавычек нужны вложенные кавычки, то придется использовать двойные, но они уже заняты. Если двойные (или одинарные) кавычки нужно отображать как символы, то предваряйте их обратным слешем, как в следующем примере, для трех строковых параметров JavaScript функции window.open():

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

Атрибуты – в двойных кавычках

Если посмотреть на html-код странички, сгенерированной из шаблонов предлагаемым способом, то в коде вы увидите одни одинарные кавычки. Однако, классическим считается применение двойных кавычек. В канонической форме XML значений атрибута могут обрамляться только двойными кавычками .

Чтобы вернуться к двойным кавычкам для атрибутов, есть два выхода.

    Первый способ – экранировать двойные кавычки в атрибутах обратным слешем:

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

Когда используется только одна переменная, то код с использованием одинарных кавычек и оператора конкатенации выполняется быстрее, чем код с двойными кавычками, обрамляющими весь тестируемый фрагмент, на 10-15% . Однако, если вставляются три и более переменных, то способ «Одинарные кавычки + конкатенация» выполняется, наоборот, медленнее. Например, если сто переменных перемежаются со ста символьными строками, время выполнения кода становится на 50% больше!

По стандартам XHTML значения атрибутов, даже числовые, должны быть заключены в кавычки. Разрешены как двойные, так и одинарные кавычки.

Вы должны только определиться, какой стиль вам больше подходит. Если вы – за чистоту кода страницы, применяйте в атрибутах двойные кавычки. Если вам важнее удобство кодирования, пишите в атрибутах одинарные кавычки, к тому же, одинарная кавычка, в отличие от двойной, пишется с помощью одной клавиши.

Источник

PHP: Кавычки

Какие из этих пяти вариантов — строки?

С первыми двумя всё понятно, это точно строки, мы уже работали с подобными конструкциями и говорили, что строки — это наборы символов.

Любой одиночный символ в кавычках — это строка. Пустая строка » — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек, даже если это пробел, один символ или вообще отсутствие символов.

Ранее в уроках мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:

Представьте, что вы хотите напечатать строчку dragon’s mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:

Такая программа не будет работать. С точки зрения PHP строчка началась с одинарной кавычки, а потом закончилась после буквы n. Дальше были символы s mother без кавычек — значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: ‘); . Этот код синтаксически некорректен (это видно даже по тому, как подсвечен код).

Здесь нам помогут двойные кавычки. Такой вариант программы отработает корректно:

Теперь интерпретатор знает, что строка началась с двойной кавычки — значит и завершиться должна на двойной кавычке. А одинарная кавычка внутри стала частью строки.

Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных. Причём количество кавычек внутри самой строки не важно.

А что, если мы хотим создать такую строку:

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

Для этого экранируют специальные символы. В нашем случае это символ, который является признаком конца и начала строки, — либо одинарная кавычка, либо двойная, в зависимости от ситуации. Для экранирования используется обратный слеш \ .

Посмотрите внимательно: нам нужно было добавить \ для двойных кавычек, но не для одинарной (апостроф), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.

А что, если нужно вывести сам обратный слеш? Точно так же, как и любой другой специальный символ, его надо экранировать самим собой.

Вопрос на самопроверку, что выведет этот код?

Задание

Напишите программу, которая выведет на экран:

Программа должна вывести на экран эту фразу в точности. Обратите внимание на кавычки в начале и в конце фразы:

Источник

Экранирование кавычек в php, javascript и sql

Здравствуйте, уважаемые читатели блога LifeExample, сегодня я бы хотел раскрыть тему экранирования кавычек в php, javascript и sql, рассказать что это такое и зачем нужно, а также привести несколько полезных примеров показывающих необходимость экранирования.

Что такое экранирование кавычек

Чтобы дать определение этому понятию, для начала приведу небольшой пример объявления строки.

Практически в любом языке программирования мы используем следующий принцип объявления строковой переменной:

Все, что содержится между кавычек — понимается интерпретатором как строка.

Если нам нужно передать в строковую переменную текст содержащий кавычки и мы попытаемся сделать это таким образом:

то произойдет ошибка, поскольку вместо одной строки интерпретатор увидит две:

а между ними неизвестный ему оператор – lifeexample.ru .

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

После данного практического примера можно дать определение понятию экранирования кавычек.

Экранирование кавычек – это действие, совершаемое над строковой переменной в ходе работы скрипта. Действие это позволяет использовать кавычки в строке. Частным но довольно распространенным способом экранирования является подстановка обратного слеша \ перед внутренними кавычками.

Php экранирование кавычек

В php экранировать кавычки можно несколькими способами, первый из них аналогичен рассматриваемому выше.

Например, мы имеем строку с авторской и прямой речью, которая содержит кавычки:

«Как же вы поживаете?» – спросила Екатерина Ивановна. «Ничего, живем понемножечку», – ответил Старцев (Чехов)

Чтобы вывести ее на страницу, в PHP следует делать одним из следующих способов.

Экранирование обратным слешем:

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

В случае, когда внутренних кавычек в строке много проще при объявлении строки использовать одинарные кавычки, а внутри нее двойные. Либо, наоборот, в зависимости от наличия в тексте тех или иных кавычек.

Зачем может понадобиться экранирование кавычек в PHP

Помимо разобранного примера с выводом строк, экранирование кавычек и других спец символов зачастую необходимо при работе с БД.

Чтобы не допустить, различного рода проблем при работе с базой данных, перед сохранением данных в таблицы можно использовать функцию addslashes

Обе эти функции являются стандартными в php и экранируют спецсимволы строк. Когда и какую использовать, зависит от конкретных задач. Например addslashes лучше использовать для сериализованной строки при записи ее в базу, а mysql_real_escape_string для всех пользовательских данных пришедших с формы на сайте.

В небольших web-приложениях, можно не использовать ручное экранирование addslashes или mysql_real_escape_string если включить «Магические кавычки» — magic_quotes_gpc

Зачастую магические кавычки включены по умолчанию на сервере, это можно узнать из информацией полученной при выполнении функции

javascript экранирование кавычек

Очень часто, особенно в javascript приходится работать со строками, содержащими HTML разметку.

В javascript экранирование кавычек происходит аналогичным образом, либо обратным слешем, либо использованием разного типа кавычек.
Пример с обратным слешем:

Пример с внутренними кавычками:

Когда строка с HTML разметкой слишком длинная и требует переноса строки, снова появляется необходимость экранирования, в этом случае уже не кавычек, а символа переноса строки

Если в данном примере не использовать обратный слешь перед переносом строки, то скрипт работать не будет.

Довольно редко, но можно столкнуться с задачей передать HTML разметку в сериализованной строке формата JSON. Если строка содержит символы переноса, то формат JSON будет нарушен.

Чтобы избежать этих проблем нужно прогнать текст с переносом строк через функцию JSON.stringify()

JSON.stringify() – доступна только после подключения библиотеки jquery.

Sql экранирование кавычек

В sql экранирование кавычек помимо разобранных нами в php и js способов — обратного слеша и внутренних кавычек, имеет еще одно решение.

Для экранирования кавычки в sql нужно их дублировать.

Убрать экранирование кавычек

Убрать экранирование кавычек в php можно стандартной функцией stripslashes();

В javascript не существует аналога stripslashes, но ведь мы всегда можем воспользоваться регулярным выражением, которое поможет нам убрать экранирование кавычек в javascript

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

Читайте также похожие статьи:

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Источник

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