В последнее время я много такого видел:
<a href='http://widget-site-example.com/example.html'>
<img src='http://widget-site-example.com/ross.jpg' alt='Ross's Widget' />
</a>
Допустимо ли использовать одинарные кавычки в HTML? Как я уже отмечал выше, это также проблематично, потому что вам нужно избегать апострофов.






Безусловно, можно использовать одинарные кавычки (HTML 4.01, раздел 3.2.2). Я не заметил такой тенденции, но, возможно, есть какая-то структура, которая поддерживает посещенные вами веб-сайты, которые цитируют, используя одинарные кавычки.
Как ни странно, это в основном сайты, которые выдают внешний код - например, изображение статистики для Ohloh или как в pushuptheweb.com
Библиотека шрифтов Google теперь предоставляет образец кода в одинарных кавычках: google.com/webfonts
Я считаю, что использование одинарных кавычек удобно при динамической генерации HTML с помощью языка программирования, который использует строковые литералы в двойных кавычках.
например
String.Format("<a href='{0}'>{1}</a>", Url, Desc)
Какие? Вам не нравится String.Format ("<a href = " & ControlChars.Quote & "{0}" & ControlChars.Quote & "> {1} </a>", Url, Desc) ??? = P
String.Format (@ "<a href = ""{0}""> {1} </a>", Url, Desc) это то, что вы могли бы рассмотреть :)
или String.Format ("<a href=\"{0}\"> {1} </a>", URL, Desc)
3 прекрасных примера крайнего уродства :)
и это отличный пример того, как создать XSS-уязвимости на вашем сайте.
При использовании PHP для генерации HTML может быть проще сделать что-то вроде:
$html = "<img src='$url' />";
чем объединение строки с переменной со строкой, поскольку PHP анализирует переменные в строках, заключенных в двойные кавычки.
Это также проще, чем смотреть на $ html = "<img src = \" {$ url} \ "/>"; Поскольку экранированные кавычки легко забыть
на самом деле вы также можете отменить это в php: $ html = '<img src = "$ url" />';
@KevinLaity, использование одинарных кавычек в PHP заставит $ url распечатать как $ url, а не содержимое переменной: php.net/manual/en/language.types.string.php
альтернативы тоже не делают его более читабельным: $html = '<img src = "'.$url.'" />'
Я использую форматированные строки, например sprintf('<img src = "%s" />', $url)
Что против одинарных кавычек?
Вы можете без проблем использовать одинарные / двойные кавычки по всему html-коду, если вы сохраняете тот же стиль цитирования внутри текущих тегов (многие браузеры не будут жаловаться даже на это, и проверка просто хочет, чтобы, если вы начнете с цитата, заканчивающаяся тем же, внутри того же приличия)
Бесплатная поддержка случайных стилей цитирования !!! (ура; D)
Это проще, если вы хотите вставить двойные кавычки.
То же самое применимо, если вы полностью измените сценарий ... так что это не веская причина, ИМО
@JoePhillips Не всегда, некоторые языки не позволяют просто «изменить сценарий». .NET, например, позволяет определять строки только с использованием двойных кавычек.
@ krowe2 Это правда. Но если вы храните javascript в строках C#, вы, вероятно, делаете все неправильно.
@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 становятся громоздкими при использовании более позднего метода.
В 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 - это '.
Одиночные кавычки не совсем допустимы в XHTML.
Одинарные кавычки - это допустимый XHTML, не так ли?
В PHP echo принимает несколько параметров. Итак, если кто-то хочет опустить оператор конкатенации, он может сделать что-то вроде и по-прежнему использовать двойные кавычки:
echo '<input type = "text" value = "', $data, '" />';
но к тому времени, когда вы это осознаете, вы уже начали свою строку эха с двойных кавычек, поэтому вы просто используете одиночные числа внутри строки. Со мной такое случается постоянно.
Это также более эффективно с точки зрения памяти, поскольку позволяет избежать создания новой строки.
Кажется, это вообще не отвечает на вопрос.
Одиночные кавычки делают страницу более чистой и беспорядочной. Вы не должны экранировать их в строках 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. На одно нажатие клавиши меньше при том же пробеге.
ха! лучшая общая причина, которую я видел.
В вашем примере только один цитируемый атрибут действительно нуждался в кавычках.
<!-- 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>
Если вы все же используете кавычки, жесткого правила не существует, но я видел чаще всего одинарные кавычки, с двойными кавычками внутри, если это необходимо.
Использование двойных кавычек не пройдет через некоторые валидаторы.
Котировки необходимы для того, чтобы содержание было действительным html 4.01
Если вы хотите, чтобы html был действительным html4 или xhtml, тогда для атрибутов будут работать как одинарные кавычки, так и двойные кавычки. HTML4 можно проверить здесь: https://validator.w3.org/
Если у вас поддержка только современных браузеров (ie10 и выше), вы можете использовать синтаксис html5, который допускает одинарные кавычки, двойные кавычки и отсутствие кавычек (при условии, что в значении атрибутов нет специальных символов). HTML5 можно проверить здесь: https://validator.w3.org/nu
Другой случай, когда вы можете захотеть использовать одинарные кавычки: Хранение данных JSON в атрибутах данных:
<tr data-info='{"test":true}'></tr>
Ключи объектов JSON должны быть в двойных кавычках, поэтому сам атрибут не может.
Забавно, что некоторые люди даже сегодня придерживаются стандарта «только двойные кавычки», который на самом деле никогда не был стандартом, а являлся условностью. Кроме того, если ваш язык имеет апострофы как естественный элемент (английский, кто-нибудь?), Это более удобно, но, на мой взгляд, увеличение сложности строковых композиций PHP - слишком высокая цена, чтобы за это платить.
Я бы хотел, чтобы это стало популярным с самого начала! Поскольку двойные кавычки были более популярными, обычным стилем JavaScript стало использование одинарных кавычек в JavaScript, потому что строки будут заполнены HTML с двойными кавычками. Теперь я набрал так много строк в одинарных кавычках в JavaScript, что всякий раз, когда я использую другой язык, например Python, C#, C++, я набираю одинарные кавычки и получаю синтаксические ошибки ?