Правильно ли использовать одинарные кавычки для атрибутов HTML?
Недавно я видел много этого:
<a href='http://widget-site-example.com/example.html'>
<img src='http://widget-site-example.com/ross.jpg' alt='Ross'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 '
,
Одиночные кавычки создают более чистую страницу с меньшим количеством беспорядка. Вам не следует экранировать их в 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. Еще одно нажатие клавиши для одного и того же хода.
Давай уладим этот аргумент навсегда
- Двойные кавычки в порядке
- Одинарные кавычки в порядке
- Никакие кавычки не допустимы, если у вас нет одного из этих символов:
- пространство (очевидно)
- «<» или «>» (имеет смысл)
- знак равенства (не знаю почему, но хорошо)
- любые цитаты: двойные, одинарные, обратные кавычки (опять же, имеет смысл)
Забавно, что некоторые люди даже сегодня придерживаются стандарта «только двойные кавычки», который никогда не был стандартом, а был условностью. Кроме того, если ваш язык имеет апострофы как естественный элемент (английский, кто-нибудь?), Это более удобно, но, на мой взгляд, увеличение сложности строковых композиций PHP - слишком высокая цена, чтобы за это платить.
Вы должны избегать кавычек вообще.
В вашем примере только один цитируемый атрибут действительно нуждается в кавычках.
<!-- best form -->
<a href=http://widget-site-example.com/example.html>
<img src=http://widget-site-example.com/ross.jpg alt='Ross's Widget' />
</a>
Если вы используете кавычки, то нет строгого и быстрого правила, но я чаще всего видел одинарные кавычки, с двойными кавычками внутри, если это необходимо.
Использование двойных кавычек не пройдет некоторые валидаторы.