Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 从数据库将大文本加载到Zend textarea_Html_Zend Framework_Textarea - Fatal编程技术网

Html 从数据库将大文本加载到Zend textarea

Html 从数据库将大文本加载到Zend textarea,html,zend-framework,textarea,Html,Zend Framework,Textarea,我试图填充这样定义的textarea $this->addElement('textarea', 'body', array( 'label' => $translate->translate('Contents:'), 'cols' => '80', 'rows' => '24', 'required' => true )); 从数据库记录。该记录是一个BLOB,包含页面的HTML文本,采用UTF-8格式 $form->populat

我试图填充这样定义的
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' => '4096',
但似乎没有效果

现在,从我在网上找到的信息来看,
textarea
限制应该大于2934字节,更接近30-60KB。除了将字段拆分为两个单独的表单元素之外,我如何解决这个问题

更新
罪魁祸首似乎是字符“ß”,在数据库中被编码为两个字符“Ô�". 该字符第一次出现在文本中的2934位置,因此双字节表示中的第二个字符以某种方式使字段无法完全接收文本。

如问题更新中所述,罪魁祸首是字符“ß”,该字符在数据库中编码为两个字符“Ô�“。该字符第一次出现在文本中的2934位置,因此两字节表示法中的第二个字符以某种方式使字段无法完全接收文本


正如ficuscr在他的评论中指出的那样,破坏文本的是调用
str_replace
函数。在调用
preg_replace
函数替换文本后,文本被正确地保存在数据库中,字段收到了全文。

您确定问题不在于将blob从数据库中取出吗?似乎更糟e问题可能就在那里,而不是让表单元素获取那么多数据。不,我肯定文本正在从数据库中检索,原因有两个:1)我简单地尝试了
echo
ing,成功了,2)如果我做了
substr('page['body',12934)
相反,表单元素是正确填充的。使用
substr($page['body',12935)
它已经不是了。将HTML吐出到文本区域…如果您查看页面源代码,所有内容都在吗?您可能需要使用WYSIWYG编辑器或通过
HTMLentites()运行它
。请参阅:在没有html\u entity\u decode和/或str\u replace的情况下,它可以工作吗?
html\u entity\u decode
上的默认编码是UTF-8。至于
str\u replace
“…”在多字节字符串上使用单字节字符串函数可能会导致意外结果“,ref:可能更改为
preg\u replace
-非常确定无需触摸
mb\u ereg\u replace