Одинарные и двойные кавычки вместе как значение атрибута HTML?

У нас есть такой код:

echo '<input type="text" name="myInput" value="Double " Quotes" />'; 

Абсолютно это не работает, потому что цитата после Double заканчивает значение. Мы можем исправить это, используя одинарные кавычки вместо двойных.

 echo '<input type="text" name="myInput" value=\'Double " Quotes\' />'; 

Теперь я хочу использовать как одиночные, так и двойные кавычки в качестве значения. Он должен выходить. She said:"I don't know."

Есть ли способ исправить его БЕЗ использования HTML-сущностей (Like &quot; ), htmlentities() или подобных функций?

Solutions Collecting From Web of "Одинарные и двойные кавычки вместе как значение атрибута HTML?"

Есть ли способ исправить его БЕЗ использования HTML-сущностей (Like &quot; ), htmlentities() или подобных функций?

Нет, нет. Двойная кавычка ( " ) имеет особое значение внутри атрибута HTML. Если вы хотите поместить ее в значение атрибута, вы должны (это не истинное обязательное условие, но хорошее эмпирическое правило. Это необходимо, если вы используете атрибуты, разделенные символом двойные кавычки, как вы делаете в своем вопросе), напишите его как его сущность &quot; . Нет никакого способа обойти это.

Фактически даже <tag attr='this"'> не является ошибочным HTML, и большинство браузеров могут справиться с этим. Однако это не поможет вам, потому что вы ищете оба кавычки – одиночные и двойные – и один из них всегда в HTML является разделителем значения атрибута – если вам нужны пробелы внутри значения атрибута (как и вы).

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

И на самом деле PHP для вас взять на себя бремя «ускользания» всех этих персонажей только с htmlspecialchars метода htmlspecialchars который делает всю работу за вас. Внутри строки PHP у вас есть исходный текст – с одинарными и двойными кавычками, как вы считаете нужным – дословно.

 $myString = 'She said: "I don\'t know."'; printf('<input type="text" name="myInput" value="%s" />' , htmlspecialchars($myString)); 

Просто сокращенный пример, который должен продемонстрировать, как это работает. Онлайн-демонстрация .

Чтобы решить вопрос в названии, нет никакой проблемы с использованием значения «и» в значении атрибута. Проблема возникает при линеаризации значений, и их записи в разметке HTML (как противоположность их созданию с помощью клиентского JavaScript). Затем, если значение содержит «и», любой из них должен быть экранирован, в зависимости от того, какой из них используется в качестве разделителя значений.

Однако вам не нужно использовать ссылки на сущности. &#x22; ссылки &#x22; и &#x27; (или эквивалентные десятичные ссылки).

В случае строки

Она сказала: «Не знаю».

правильное английское правописание

Она сказала: «Не знаю».

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

Как правило, вы не можете этого сделать. Хотя вы не указали, какую версию HTML вы используете. Но вот хорошая документация:

http://www.w3.org/TR/html-markup/syntax.html#attribute

Из этого описания очень ясно, что в некоторых случаях вы должны использовать escape-последовательности.