Как сделать кавычки внутри кавычек html

Добавил пользователь Евгений Кузнецов
Обновлено: 28.08.2024

Эта страница содержит кавычки всех видов, вытащенные из разных разделов Юникода.

Этот знак препинания является парным. Им обозначают прямую речь, или слово, которое используется в значении, не соответствующем обычному — например, в обратном. Существует несколько видов. Названия пошли от страны, где они были придуманы и от сходства начертания с некоторыми предметами.

Употребление кавычек в разных языках.

Правила не строгие (если вообще есть), не удивляйтесь, если они слабо соблюдаются.

Казалось бы, что может быть проще кавычек! Видишь название, цитату или слово в ироничном значении - ставишь в начале и в конце этот символ. Кавычка справа, кавычка слева - и готово. Всем все понятно.

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

Когда такое может потребоваться?

Ну, например, когда внутри цитаты приводится другая цитата. Или когда внутри цитаты есть разные названия. Самый шик - финальное совпадение кавычек, когда цитата заканчивается закавыченным названием. Получается, в конце предложения должна ставиться одна кавычка, а сразу за ней другая?

Что говорят правила русского языка о таких моментах?

Поэтому все пользуются "лапками". А в случае однотипных кавычек трюк с внешними и внутренними провернуть не получится. Два одинаковых символа кавычек рядом стоять не могут ни в коем случае!

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

В итоге ставите в конце всего одну кавычку, и она считается закрывающей для всех сразу.

Выглядит это вот так:

Обратили внимание? Открывающих кавычек здесь две, поскольку внутри цитаты находится еще одна цитата. А закрывающая кавычка - только одна. Вторая ею поглощена.

А вы как поступаете в таких случаях? Пользуетесь разными типами кавычек или применяете правило поглощения?


в эти переменные уже приходят данные с двойными кавычками типа ООО "Рога и копыта" , как быть в такой ситуации?

FanatPHP

Henry Chinasky, на самом деле это тоже костыль.
Поскольку у него теперь вдруг резко поменялась концепция, и код превратился из пхп в жс, то надо менять и подход. Не колупаться, собирая строку руками, а добавлять новые элементы сразу в дом модель.

mrusklon

Henry Chinasky, вот это хорошая функция

напишите ее отдельно, помечу как ответ

Павел, это ветка и есть ответ, так как если загуглить функцию указную выше (htmlspecialchars js) то гугл сочтет что вы ищете аналог для js. Тем самым отправив вас первой ссылкой на ответ.

AleksandrB

FanatPHP

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

FanatPHP, я тебе в отцы гожусь. Про экранирование скинул первое попавшееся (там есть то что ему нужно). И такие вопросы глупо писать здесь. Гугл в помощь

mrusklon

а как в моем случае быть? в html я не могу использовать одинарную кавычку и я заранее не знаю где вручную экранировать двойные кавычки, надо как то автоматизированно это делать

FanatPHP

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

mrusklon

есть место в js

тут нельзя скобки менять у value="" , просто поломаем html, нужно экранировать сам вывод js массива

FanatPHP

mrusklon

FanatPHP

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

mrusklon

FanatPHP

Тебе не советы надо давать, а отдать в школу для детей с особенностями развития. Чтобы там тебя сначала научили читать и писать. И только если оттуда выпустят, то пытаться учить такие сложные вещи, как вывести строку на РНР в браузер без ошибок.

mrusklon

FanatPHP

Проблема в том, что ты даже не понимаешь уровня своей неграмотности. Для тебя школа = тюрьма.
В общем, это не мое, конечно дело. Но я бы тебе серьезно советовал перестал мучать себя и других и освоить другую профессию, соответственно твоему уровню образования.

mrusklon

FanatPHP, а кто тут говорил о профессии? Об образовании?
может я дворником работаю? А может я дипутат?
Я не ставлю себе цель учится быстро, да я довольно долго это делаю но у меня есть ряд причин на это, куда мне спешить?
Хочешь сказать что учится не стоит? Зачем сам тогда это делаешь? Или все знаешь? Если тебе какой то супер пупер прогер из силиконовой долины скажет что ты до джуна даже не дотягиваешь, ты перестанешь?

FanatPHP, как и кажущийся интеллект. Слишком высокомерный вы типок. По делу ничего не сказали. Так что свой острый язык можете уже вынуть. из этого поста.

FanatPHP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задача 1

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

Задача 2

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


Photo by Vlada Karpovich from Pexels

Какие кавычки стоит использовать в JavaScript: одинарные или двойные? Ответ меня удивил: эти варианты совершенно идентичны, если не рассматривать вопрос экранирования.

И одинарные, и двойные кавычки в коде на JS используются довольно часто. С их помощью создаются строковые литералы.

Единственная разница между одинарными и двойными кавычками в JS связана с экранированием кавычек внутри строковых литералов.

Одинарные кавычки

Если строковый литерал образован при помощи одинарных кавычек ( '' ), другие одинарные кавычки внутри него нужно экранировать при помощи обратного слэша ( \' ).

Двойные кавычки

Аналогично, если строковый литерал образован при помощи двойных кавычек ( "" ), другие двойные кавычки внутри него тоже нужно экранировать при помощи обратного слэша ( \' ).

Примечание редакции Techrocks. Экранирование не требуется, если для создания литерала вы использовали один тип кавычек, а внутри него — другой.

Пара двойных или одинарных кавычек может представлять пустую строку, не содержащую никаких символов.

Не лучше ли использовать обратные кавычки?

В ES6 появились шаблонные литералы, которые создаются при помощи обратных кавычек ( `` ).

Эти литералы имеют три больших преимущества:

2. Отпадает необходимость экранировать одинарные или двойные кавычки

3. Многострочный код можно писать без символов новой строки (\n)

Обратные кавычки также больше подходят для HTML:

Шаблонные литералы не уступают по скорости строковым. Так почему бы не использовать повсеместно обратные кавычки?

Не забывайте о JSON

Легковесный формат хранения данных JSON допускает использование только двойных кавычек.

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

Функции stringify() и parse() , которые используются для работы с файлами JSON внутри JavaScript, знают о двойных кавычках:

Как видно из примера, одинарные кавычки мешают распарсить JSON.

С технической точки зрения причина этого — в спецификации JSON (RFC 7159), где есть требование использования именно двойных кавычек.

Почему бы не использовать все три вида кавычек?

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

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

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

Для обеспечения единообразия используйте ESLint

Если последовательность стиля имеет для вас значение (как и для разработчиков Airbnb), ее легко обеспечить при помощи ESLint:

  • Правило quotes в ESLint может требовать использования двойных кавычек (по умолчанию), а одинарных или обратных — там, где это возможно.
  • Это правило также может требовать применения только одного вида кавычек. (За исключением случаев, если строка содержит символ кавычки, который придется экранировать).
  • Наконец, ESLint может требовать использования одинарных или двойных кавычек и при этом допускать использование обратных для создания шаблонных литералов.

Используйте Prettier и вообще забудьте об этой проблеме

Более простое решение, чем использовать ESLint для обеспечения единообразия стиля, — использовать Prettier для автоматического форматирования.

В Prettier по умолчанию используются двойные кавычки. Но его можно легко переключить на использование одинарных (по крайней мере, в CodeSandbox.io).


Для Prettier также есть соответствующее расширение в VSCode.

Мои личные предпочтения

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

Prettier я использую с дефолтными установками для двойных кавычек — просто привык к этому.

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

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

Читайте также: