Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение < и > в textarea 
V
    Опции темы
flashaa
Дата 23.1.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Проблема в том, что у меня есть некие данные, которые содержат html-код, в нем соответственно есть html-сущности. Но проблема в том, что браузеры отображают > и тому подобные как их html-символы. К примеру хочу отредактировать текста с этим <, открываю веб-редактор свой, там в textarea вставляется код html. При просмотре исходного кода страницы - все символы корректны (остаются сущностями), а в браузере заменяется > на > и при отправке передает уже  > вместо моего > - явное нарушение работы. Как с этим быть?
PM MAIL   Вверх
GeneralElectric
Дата 23.1.2008, 11:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



поступить с этим очевидно - преобразовать в html-сущности.
это же ведь надо делать вообще всегда. странно, что вопрос только сейчас возник.
PM MAIL   Вверх
flashaa
Дата 23.1.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(GeneralElectric @  23.1.2008,  11:28 Найти цитируемый пост)
это же ведь надо делать вообще всегда. странно, что вопрос только сейчас возник. 

Все не так просто. В коде могут быть как теги, так и сущности - в том и сложность - нельзя все под одну гребенку. Это админ-панель, а не клиентская часть - потому тут такое тонкое редактивароние.
PM MAIL   Вверх
MoLeX
Дата 23.1.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



flashaa я немного не понял. у тебя вместо <a href="#"> отправляется &lt;a href="#"&gt; или что?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
flashaa
Дата 23.1.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Поясняю. 
Изначально я добавлял вот такой текст:
Код

<code> a &lt; b </code>

Поскольку этот код выглядел в textarea именно так, при сабмите он пришел на сервер в таком виде и корректно сохранился.
Но! Когда я открываю этот код уже для редактирования, то есть этот (только что добавленный мной код) вставляется в textarea, 
я вижу вот что:
Код

<code> a < b </code>

Хотя при просмотре исходного кода, вижу в <textarea></textarea> изначальный вариант! Т.е. это браузер изменил внешний вид символа &lt; на <! 
Ладно если бы он только визуально его изменил! Так нет - если теперь сохранить данный код, на сервер отправится именно
Код

<code> a < b </code>

Таким образом изначальный &lt; будет заменен на < совершенно неправомерно, считаю.
PM MAIL   Вверх
flashaa
Дата 23.1.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Cвел задачу к более узкой в рамках того, что мне надо было  - у меня сущности актуальны только внутри тега <code>, а тегов внутри него не подразумевается. Потому я при приеме данных вычленяю содержимое между <code></code> и заменяю все < и > на &lt; и &gt;. 
PM MAIL   Вверх
skyboy
Дата 23.1.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



решение - в использовании htmlspecialchars;
вот код, который после "переотправки" не искажает ничего:
Код

<?php
echo<<<BODY
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body>
<form action="" method="post">
BODY;
$txt= isset($_POST['val'])?$_POST['val']: '';
echo '<textarea name="val">'.htmlspecialchars($txt).'</textarea>';
echo<<<BODY
<input type="submit" />
</form>
</body>
</html>
BODY;
?>

PM MAIL   Вверх
GeneralElectric
Дата 23.1.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



flashaa, всё "так" просто. Не надо страдать излишними сложностями.
Данные перед редактированием в текстарии надо прогонять через замену сущностей. Это должно быть правилом всегда. вообще всегда. Странно, что ты раньше это не делал.
И работает это всегда, для любых случаев и кодов.
прежде, чем говорить, что все так сложно, надо сначала попробовать, что тебе говорят

PM MAIL   Вверх
flashaa
Дата 23.1.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Немного ввел в заблуждение. Проблема не в том месте, которое было приведено, а в использовании XSLT-шаблонов и XML как контенейра. При добавлении данных в XML, спецсимволы автоматически заменялись и где были сущности, а где теги - не разобрать. Это проблема данного подхода. Спасибо MoLeX за код, который помог в этом разобраться.
Цитата(GeneralElectric @  23.1.2008,  12:37 Найти цитируемый пост)
прежде, чем говорить, что все так сложно, надо сначала попробовать, что тебе говорят

Не надо злиться.. Это всего лишь форум. Пробовал я так, как сказано выше - у меня проблема такая в связи с привязкой с XML.
PM MAIL   Вверх
flashaa
Дата 23.1.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Проблема была даже не в XML, а просто в том, что htmlspecialchars_decode() было вставлено лишний раз.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.