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

В последнее время я много такого видел:

<a href='http://widget-site-example.com/example.html'>
    <img src='http://widget-site-example.com/ross.jpg' alt='Ross&#39;s Widget' />
</a>

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

Я бы хотел, чтобы это стало популярным с самого начала! Поскольку двойные кавычки были более популярными, обычным стилем JavaScript стало использование одинарных кавычек в JavaScript, потому что строки будут заполнены HTML с двойными кавычками. Теперь я набрал так много строк в одинарных кавычках в JavaScript, что всякий раз, когда я использую другой язык, например Python, C#, C++, я набираю одинарные кавычки и получаю синтаксические ошибки ?

gman 19.07.2020 19:24
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
69
1
36 797
16
Перейти к ответу Данный вопрос помечен как решенный

Ответы 16

Ответ принят как подходящий

Безусловно, можно использовать одинарные кавычки (HTML 4.01, раздел 3.2.2). Я не заметил такой тенденции, но, возможно, есть какая-то структура, которая поддерживает посещенные вами веб-сайты, которые цитируют, используя одинарные кавычки.

Как ни странно, это в основном сайты, которые выдают внешний код - например, изображение статистики для Ohloh или как в pushuptheweb.com

Ross 28.10.2008 13:25

Библиотека шрифтов Google теперь предоставляет образец кода в одинарных кавычках: google.com/webfonts

Simon East 14.12.2011 03:03

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

например

String.Format("<a href='{0}'>{1}</a>", Url, Desc)

Какие? Вам не нравится String.Format ("<a href = " & ControlChars.Quote & "{0}" & ControlChars.Quote & "> {1} </a>", Url, Desc) ??? = P

StingyJack 07.11.2008 23:56

String.Format (@ "<a href = ""{0}""> {1} </a>", Url, Desc) это то, что вы могли бы рассмотреть :)

Nikita Ignatov 03.01.2009 15:50

или String.Format ("<a href=\"{0}\"> {1} </a>", URL, Desc)

missaghi 14.01.2009 21:55

3 прекрасных примера крайнего уродства :)

ThiefMaster 16.12.2011 06:10

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

Allison 19.05.2017 09:31

При использовании PHP для генерации HTML может быть проще сделать что-то вроде:

$html = "<img src='$url' />";

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

Это также проще, чем смотреть на $ html = "<img src = \" {$ url} \ "/>"; Поскольку экранированные кавычки легко забыть

Sekhat 28.10.2008 14:08

на самом деле вы также можете отменить это в php: $ html = '<img src = "$ url" />';

Kevin Laity 07.01.2011 21:46

@KevinLaity, использование одинарных кавычек в PHP заставит $ url распечатать как $ url, а не содержимое переменной: php.net/manual/en/language.types.string.php

bradlis7 10.11.2011 20:56

альтернативы тоже не делают его более читабельным: $html = '<img src = "'.$url.'" />'

JimmyMcHoover 24.01.2013 13:16

Я использую форматированные строки, например sprintf('<img src = "%s" />', $url)

Koen. 28.10.2015 02:11

Что против одинарных кавычек?

Вы можете без проблем использовать одинарные / двойные кавычки по всему html-коду, если вы сохраняете тот же стиль цитирования внутри текущих тегов (многие браузеры не будут жаловаться даже на это, и проверка просто хочет, чтобы, если вы начнете с цитата, заканчивающаяся тем же, внутри того же приличия)

Бесплатная поддержка случайных стилей цитирования !!! (ура; D)

Это проще, если вы хотите вставить двойные кавычки.

То же самое применимо, если вы полностью измените сценарий ... так что это не веская причина, ИМО

Joe Phillips 14.01.2009 21:59

@JoePhillips Не всегда, некоторые языки не позволяют просто «изменить сценарий». .NET, например, позволяет определять строки только с использованием двойных кавычек.

krowe2 04.02.2017 01:47

@ krowe2 Это правда. Но если вы храните javascript в строках C#, вы, вероятно, делаете все неправильно.

Joe Phillips 04.02.2017 07:41

@JoePhillips Я не упоминал JS, но это была бы ОДНА причина для этого, и нет, в этом нет ничего плохого. Один из распространенных примеров - очистка кеша. Reponse.Write(String.Format("<script src='/js/myjs.js?{0}' type=text/javascript></script>", MakeUniqueStringFun())); Этот пример был бы лучше, если бы он не работал так же хорошо, как: <script src='/js/myjs.js?<%=MakeUniqueStringFun()%>' type=text/javascript></script>, но один на самом деле не более правильный, чем другой, и должно быть очевидно, что более длинные фрагменты JS становятся громоздкими при использовании более позднего метода.

krowe2 07.02.2017 19:29

В ASP.NET проще использовать одинарные кавычки, если вы используете выражения привязки данных в атрибутах:

<asp:TextBox runat = "server" Text='<%# Bind("Name") %>' />

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

Пример:

echo "<input type='text' value='$data'/>";

вместо

echo "<input type=\"text\" value=\"$data\" />";

или же

echo '<input type = "text" value = "' . $data . '" />';

В настоящее время я всегда использую двойные кавычки для HTML и одинарные кавычки для Javascript.

Одиночные кавычки совершенно допустимы в (X) HTML. С другой стороны, использование обратной косой черты для их экранирования - нет. <img src='http://widget-site-example.com/ross.jpg' alt='Ross\'s Widget' /> - это изображение с альтернативным текстом "Ross \" и пустыми атрибутами s и Widget / Widget'. Правильный способ избежать апострофа в HTML - это &#39;.

Одиночные кавычки не совсем допустимы в XHTML.

Joe Phillips 14.01.2009 22:11

Одинарные кавычки - это допустимый XHTML, не так ли?

Bennett McElwee 18.01.2010 06:53

В PHP echo принимает несколько параметров. Итак, если кто-то хочет опустить оператор конкатенации, он может сделать что-то вроде и по-прежнему использовать двойные кавычки:

echo '<input type = "text" value = "', $data, '" />';

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

DiegoDD 29.07.2013 21:32

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

Andrea 17.10.2014 17:39

Кажется, это вообще не отвечает на вопрос.

krowe2 04.02.2017 01:45

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

Я знаю, что это старая ветка, но все еще очень актуальная.

Если вы хотите контролировать кавычки в сгенерированном HTML, вы можете использовать функцию sprintf () в PHP (и аналогичные вызовы, доступные на многих других языках):

$html = sprintf('<a href = "%s">%s</a>', $url, $text);

Использование sprintf () позволяет легко изменять строку формата, извлекая ее из базы данных или файла конфигурации или с помощью механизмов перевода.

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

$html = sprintf("<a href='%s'>%s</a>", $url, $text);

Почему бы не сохранить нажатие клавиши SHIFT. На одно нажатие клавиши меньше при том же пробеге.

ха! лучшая общая причина, которую я видел.

Joseph Gabriel 21.04.2014 21:17

Вам следует вообще избегать цитат.

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

<!-- best form -->
<a href=http://widget-site-example.com/example.html>
  <img src=http://widget-site-example.com/ross.jpg alt='Ross&#39;s Widget' />
</a>

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

Использование двойных кавычек не пройдет через некоторые валидаторы.

Котировки необходимы для того, чтобы содержание было действительным html 4.01

Eric 30.10.2015 19:01

Если вы хотите, чтобы был действительным или , тогда для атрибутов будут работать как , так и . HTML4 можно проверить здесь: https://validator.w3.org/

Если у вас поддержка только современных браузеров ( и выше), вы можете использовать синтаксис , который допускает одинарные кавычки, двойные кавычки и отсутствие кавычек (при условии, что в значении атрибутов нет специальных символов). HTML5 можно проверить здесь: https://validator.w3.org/nu

Другой случай, когда вы можете захотеть использовать одинарные кавычки: Хранение данных JSON в атрибутах данных:

<tr data-info='{"test":true}'></tr>

Ключи объектов JSON должны быть в двойных кавычках, поэтому сам атрибут не может.

Давай уладим этот аргумент навсегда


  1. Двойные кавычки в порядке
  2. Одинарные кавычки в порядке
  3. Нет цитат в порядке, если у вас нет одного из этих символов:
    • пространство (очевидно)
    • «<» или «>» (имеет смысл)
    • знак равенства (не знаю почему, но хорошо)
    • любые цитаты: двойные, одинарные, обратные кавычки (опять же, имеет смысл)

Забавно, что некоторые люди даже сегодня придерживаются стандарта «только двойные кавычки», который на самом деле никогда не был стандартом, а являлся условностью. Кроме того, если ваш язык имеет апострофы как естественный элемент (английский, кто-нибудь?), Это более удобно, но, на мой взгляд, увеличение сложности строковых композиций PHP - слишком высокая цена, чтобы за это платить.

Другие вопросы по теме