На моем сайте, где для отправки используется текстовое поле, у меня есть код, который может выглядеть примерно так:
<textarea><p>text</p></textarea>
При проверке (XHTML 1.0 Transitional) возникает эта ошибка,
line 88 column 50 - Error: document type does not allow element "p" here
Если это недопустимый метод, чего ожидать? Я мог бы найти обходной путь с помощью события onload JavaScript, но это кажется ненужным. Несмотря на это, это не влияет на результат, но я бы предпочел, чтобы мой сайт прошел проверку.



есть причина, по которой вы пытаетесь поместить <p> в <textarea>? как вы выяснили, это недействительно. если он предназначен для отображения (т. е. для отображения кода), его следует перевести:
<textarea><p>text</p></textarea>
Помимо проблем с проверкой, разрешение на отображение произвольных тегов (которые неправильно закодированы, как указано выше) может стать серьезной проблемой для безопасности. Очень важно убедиться, что любой вводимый пользователем ввод был должным образом продезинфицирован перед отображением.
Вы можете опустить теги в текстовой области, а когда вам нужны новые строки, используйте \ n В противном случае используйте <p> и </p> вместо ваших тегов.
Вы можете использовать функцию onload для замены начальных и конечных тегов содержимого текстового поля.
eg: replace < > with < >
<textarea cols = "" rows = ""><p>text</p></textarea>
<p> текст </p>
Правильно ли я думаю, что вы пытаетесь создать редактор WYSIWYG, такой как TinyMCE? Похоже, что большинство из них использует объекты HTML в textarea и конвертирует их в HTML с помощью JavaScript.
Подойдет ли вам раздел CDATA?
<textarea><![CDATA[
<p>Blah</p>
]]></textarea>
вы можете использовать эту функцию для опубликованных данных
function clean_data($value) {
if (get_magic_quotes_gpc()) { $value = stripslashes($value); }
$value = addslashes(htmlentities(trim($value)));
$value = str_replace("\'", "'", $value);
$value = str_replace("'", "'", $value);
$value = str_replace(":", ":", $value);
return $value;
}
По какой-то причине я думал, что объекты HTML не будут отображаться в текстовой области (тупой). Преобразование HTML-сущностей в символы, а затем все они, кажется, сделали это :)