XHTML и код внутри текстовых полей - PullRequest
5 голосов
/ 13 октября 2008

На моем сайте, на котором текстовая область используется для отправки, у меня есть код, который может выглядеть примерно так:

<textarea><p>text</p></textarea>

При проверке (XHTML 1.0 Transitional) возникает эта ошибка,

line 88 column 50 - Error: document type does not allow element "p" here

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

Ответы [ 6 ]

8 голосов
/ 13 октября 2008

есть ли причина, по которой вы пытаетесь поместить <p> в <textarea>? как вы узнали, это не действует. если оно предназначено для отображения (т.е. показывает код), оно должно быть переведено:

<textarea>&lt;p&gt;text&lt;/p&gt;</textarea>

Помимо проблем проверки, разрешение отображать произвольные теги (которые неправильно закодированы, как указано выше) может быть серьезной проблемой безопасности крайне важно убедиться, что любой введенный пользователем ввод был должным образом очищен перед его отображением.

3 голосов
/ 13 октября 2008

Будет ли для вас вариант CDATA?

<textarea><![CDATA[
    <p>Blah</p>
]]></textarea>
1 голос
/ 13 октября 2008

Правильно ли я думаю, что вы пытаетесь создать WYSIWYG-редактор, такой как TinyMCE? Что чаще всего кажется, так это использование HTML-сущностей в textarea и преобразование их в HTML с помощью JavaScript.

0 голосов
/ 15 декабря 2008

Вы можете использовать эту функцию для опубликованных данных

function clean_data($value) {
    if (get_magic_quotes_gpc()) { $value = stripslashes($value); }
    $value = addslashes(htmlentities(trim($value)));
    $value = str_replace("\'", "&#39;", $value);
    $value = str_replace("'", "&#39;", $value);
    $value = str_replace(":", "&#58;", $value);
    return $value;
}
0 голосов
/ 13 октября 2008

Вы можете использовать функцию загрузки для замены начальных и конечных тегов содержимого textarea.

eg: replace < > with &lt; &gt;

<textarea cols="" rows="">&lt;p&gt;text&lt;/p&gt;</textarea>

текст

0 голосов
/ 13 октября 2008

Вы можете пропустить теги в текстовой области, а когда вам нужны новые строки, используйте \ n В противном случае используйте &lt;p&gt; и &lt;/p&gt; вместо ваших тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...