可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am using a CKEditor and saving content to a MySQL database. When trying to edit the content again in the editor, I am getting HTML tags displayed as text, for example:
my test<br />and second line
How can I have it display in the editor correctly again?
I have been fiddling with htmlentities and html_entity_decode and CKEditor related settings for over an hour now, with no avail.
$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);
回答1:
It seems that CodeIgniter's func set_value()
acts like htmlspecialchars()
in some way. So if you are getting <any_tag> on CKEditor this workaround can help you. Change
$ck_editor->editor("sec1_content", set_value('sec1_content', html_entity_decode($default_value)), $config);
To this:
$ck_editor->editor("sec1_content", html_entity_decode(set_value('sec1_content', $default_value)), $config);
PoloRM
Put html_entity_decode around set_value. The reason for this is obviously because the set_value method might not use the $default_value parameter but return the posted data instead.
回答2:
For people who might have the same issue with CodeIgniter/CKEditor:
The way to resolve this issue and still use the CodeIgniter set_value() method is the following:
$ck_editor->editor("sec1_content", set_value('sec1_content', html_entity_decode($default_value)), $config);
Do this:
$ck_editor->editor("sec1_content", html_entity_decode(set_value('sec1_content', $default_value)), $config);
Put html_entity_decode around set_value. The reason for this is obviously because the set_value method might not use the $default_value parameter but return the posted data instead.
Thank you coramba for making me realize my mistake.