Правильно ли использовать одинарные кавычки для атрибутов 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? Как я уже говорил выше, это также проблематично, потому что вы должны избегать апострофов.

16 ответов

Решение

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

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

например

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

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

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

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

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

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

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

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

Пример:

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

вместо

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

или же

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Вы должны избегать кавычек вообще.

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

<!-- 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>

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

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

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