![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Проблема в том, что у меня есть некие данные, которые содержат html-код, в нем соответственно есть html-сущности. Но проблема в том, что браузеры отображают > и тому подобные как их html-символы. К примеру хочу отредактировать текста с этим <, открываю веб-редактор свой, там в textarea вставляется код html. При просмотре исходного кода страницы - все символы корректны (остаются сущностями), а в браузере заменяется > на > и при отправке передает уже > вместо моего > - явное нарушение работы. Как с этим быть?
|
|||
|
||||
| GeneralElectric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
поступить с этим очевидно - преобразовать в html-сущности.
это же ведь надо делать вообще всегда. странно, что вопрос только сейчас возник. |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Все не так просто. В коде могут быть как теги, так и сущности - в том и сложность - нельзя все под одну гребенку. Это админ-панель, а не клиентская часть - потому тут такое тонкое редактивароние. |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
flashaa я немного не понял. у тебя вместо <a href="#"> отправляется <a href="#"> или что?
-------------------- Amazing |
|||
|
||||
| flashaa |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Поясняю.
Изначально я добавлял вот такой текст:
Поскольку этот код выглядел в textarea именно так, при сабмите он пришел на сервер в таком виде и корректно сохранился. Но! Когда я открываю этот код уже для редактирования, то есть этот (только что добавленный мной код) вставляется в textarea, я вижу вот что:
Хотя при просмотре исходного кода, вижу в <textarea></textarea> изначальный вариант! Т.е. это браузер изменил внешний вид символа < на <! Ладно если бы он только визуально его изменил! Так нет - если теперь сохранить данный код, на сервер отправится именно
Таким образом изначальный < будет заменен на < совершенно неправомерно, считаю. |
||||||
|
|||||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Cвел задачу к более узкой в рамках того, что мне надо было - у меня сущности актуальны только внутри тега <code>, а тегов внутри него не подразумевается. Потому я при приеме данных вычленяю содержимое между <code></code> и заменяю все < и > на < и >.
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
решение - в использовании htmlspecialchars;
вот код, который после "переотправки" не искажает ничего:
|
|||
|
||||
| GeneralElectric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
flashaa, всё "так" просто. Не надо страдать излишними сложностями.
Данные перед редактированием в текстарии надо прогонять через замену сущностей. Это должно быть правилом всегда. вообще всегда. Странно, что ты раньше это не делал. И работает это всегда, для любых случаев и кодов. прежде, чем говорить, что все так сложно, надо сначала попробовать, что тебе говорят |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Немного ввел в заблуждение. Проблема не в том месте, которое было приведено, а в использовании XSLT-шаблонов и XML как контенейра. При добавлении данных в XML, спецсимволы автоматически заменялись и где были сущности, а где теги - не разобрать. Это проблема данного подхода. Спасибо MoLeX за код, который помог в этом разобраться.
Не надо злиться.. Это всего лишь форум. Пробовал я так, как сказано выше - у меня проблема такая в связи с привязкой с XML. |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Проблема была даже не в XML, а просто в том, что htmlspecialchars_decode() было вставлено лишний раз.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |