问题
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.
来源:https://stackoverflow.com/questions/15567285/ckeditor-displaying-html-tags-in-editor