Я пытаюсь заполнить textarea
определяются как этотЗагрузка большого текста в текстовое поле Зенда из базы данных
$this->addElement('textarea', 'body', array(
'label' => $translate->translate('Contents:'),
'cols' => '80',
'rows' => '24',
'required' => true
));
из записи базы данных. Запись - это BLOB, содержащий HTML-текст страниц, в UTF-8.
$form->populate(array(
// ...
'body' =>
str_replace("\\n", "\n",
html_entity_decode(
$page['body']
)
),
// ...
));
К сожалению, если длина текста больше 2934 байт, это поле вообще не заполнено. Я попытался установить maxlength
путем выдачи
'maxlength' => '4096',
но, кажется, не имеют никакого эффекта.
Теперь, из того, что я могу найти в Интернете, пределы textarea
должны быть больше 2934 байтов, ближе к 30-60 КБ. Помимо использования разбиения поля на два отдельных элемента формы, как я могу исправить эту проблему?
Update Кажется, что преступник был характер «ß», который кодируется в базе данных в виде двух символов «A». Первое появление этого символа находится в позиции 2934 в тексте, поэтому второй символ в двухбайтовом представлении каким-то образом разбивает поле на получение текста полностью.
Вы уверены, что проблема не в том, чтобы получить blob из базы данных? Похоже, что проблема была бы там, а не с тем, чтобы элемент формы принимал столько данных. – ficuscr
Нет, я уверен, что текст извлекается из базы данных по двум причинам: 1) Я попробовал просто «эхо» с успехом, 2), если я делаю 'substr ($ page ['body'], 1 , 2934) ', элемент формы правильно заполнен. С 'substr ($ page ['body'], 1, 2935)' it уже нет. – Vilinkameni
Выплескивание HTML в текстовое поле ... Если вы посмотрите на источник страницы, то все есть? Вам может потребоваться использовать редактор WYSIWYG или запустить его через 'htmlentitites()'. См. Http://stackoverflow.com/questions/3777297/php-html-form-textarea-containing-html – ficuscr