Я создал CMS, которая позволяет хранить HTML в базе данных.Все началось очень просто.Я отобразил HTML в текстовой области, используя htmlspecialchars, чтобы он не нарушал форму.Затем сохраните его обратно, используя html_specialchars_decode.Казалось, что все работало нормально, пока кто-то не вставил в систему какой-то HTML, а не набрал текст.В этот момент он хранился нормально, но потерял большую часть пустого пространства, что означало, что все прекрасные отступы должны были быть сделаны с нуля.
Чтобы исправить это, я попытался указать все в кодировке utf-8, потому что любая попытка манипулировать им приводила к неправильным символам.
Я указываю utf-8 в заголовке PHP
header('Content-Type: text/html; charset=utf-8');
Я указываю utf-8 на моей странице HTML
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Я указываю utf-8 в HTMLform
<form accept-charset="utf-8"
Затем я прочитал опубликованное значение (в основном) так:
$Val = $_POST[$SafeFieldName];
Насколько я понимаю, PHP делал все в utf-8, поэтому я немного удивлен этимэтап, на котором я получаю болванку - если я сейчас не сделаю это:
$Val = utf8_decode($Val);
Итак, на этом этапе - это работает - вроде.Я теряю все мои прекрасные отступы, но не все мое пустое пространство.Это как если бы некоторые не utf8 символы были удалены.Как ни странно, я использую Chrome, но в Firefox все выглядит нормально
Я думаю, что сейчас я просто завязываю себя.Какие-нибудь изящные предложения?Мне нужно докопаться до сути, а не взломать его, чтобы заставить его работать.