我正在使用CKEditor并将内容保存到MySQL数据库。当我尝试在编辑器中再次编辑内容时,我将HTML标记显示为文本,例如:
my test<br />and second line
如何让它再次正确显示在编辑器中?
我一直在摆弄htmlentities和html_entity_decode以及CKEditor相关的设置超过一个小时,但没有用。
$config = array();
$config['enterMode'] = 2;
$config['shiftEnterMode'] = 1;
//$config['basicEntities'] = FALSE;
//$config['entities'] = FALSE;
//$config['entities_greek'] = FALSE;
//$config['entities_latin'] = FALSE;
//$config['htmlDecodeOutput'] = TRUE;
$ck_editor->editor("sec1_content", $default_value, $config);
答案 0 :(得分:6)
似乎CodeIgniter的func set_value()
在某种程度上与htmlspecialchars()
类似。所以如果你得到&lt; any_tag&gt;在CKEditor上,这种解决方法可以帮助您。改变
$ck_editor->editor("sec1_content", set_value('sec1_content', html_entity_decode($default_value)), $config);
对此:
$ck_editor->editor("sec1_content", html_entity_decode(set_value('sec1_content', $default_value)), $config);
PoloRM
将html_entity_decode放在set_value附近。原因很明显是因为set_value方法可能不使用$ default_value参数,而是返回发布的数据。
答案 1 :(得分:0)
对于可能与CodeIgniter / CKEditor存在相同问题的人:
解决此问题并仍然使用CodeIgniter set_value()方法的方法如下:
$ck_editor->editor("sec1_content", set_value('sec1_content', html_entity_decode($default_value)), $config);
这样做:
$ck_editor->editor("sec1_content", html_entity_decode(set_value('sec1_content', $default_value)), $config);
将html_entity_decode放在set_value附近。原因很明显,因为set_value方法可能不使用$ default_value参数,而是返回发布的数据。
感谢coramba让我意识到自己的错误。