Reputation: 1735
How can I disable CKEditor to get me every time
, when i don't want them? I'm using CKEditor with jQuery adapter.
I don't want to have any
tags.
Upvotes: 49
Views: 73749
Reputation: 21
This is a bad solution
config.basicEntities = false;
<script type="text/javascript" src="/scripts/redactor/ckeditor/ckeditor.js"></script>
<p> </p>
сan not specify an indent in the text since the character
will be deleted (config.fillEmptyBlocks = true;)This is the right solution
$text = preg_replace("#([^>]) #ui", "$1 ", $text);
on a space, except those that are inside the tag like <p> </p>
Upvotes: 2
Reputation: 1453
After some research I might shed some light on this issue - unfortunately there is no out-of-the-box solution.
In the CKEditor there are four ways a no-break space can occur (anybody know more?):
Automatic filling of empty blocks. This can be disabled in the config:
config.fillEmptyBlocks = false;
Automatic insertion when pressing TAB-key. This can be disabled in the config:
config.tabSpaces = 0;
Converting double spaces to SPACE+NBSP. This is a browser behavior and will thus not be fixed by the CKEditor team. It could be fixed serverside or by a clientside javascript onunload. Maybe this php is a start:
preg_replace('/\s \s/ig', ' ', $text);
By copy & paste. If you paste a UTF-8 no-break space or double-spaces CKEditor will convert it automatically. The only solution I see here is doing a regex as above. config.forcePasteAsPlainText = true;
doesn't help.
Summary: To get rid of all no-break spaces you need to write an additional function that cleans user input.
Comments and further suggestions are greatly appreciated! (I'm using ckeditor 3.6.4)
Upvotes: 62
Reputation: 1459
I had already had to play around with config.js, so in order to fix '?' showing up in safari I ended up with 3 lines in config.js
config.fillEmptyBlocks = function (element) {
return true; // DON'T DO ANYTHING!!!!!};
config.entities = false;
config.basicEntities = false;
Upvotes: 0
Reputation: 1429
in config.js:
CKEDITOR.editorConfig = function( config ) {
config.enterMode = CKEDITOR.ENTER_BR; // <p></p> to <br />
config.entities = false;
config.basicEntities = false;
};
It work for me, after you can print text with php: html_entity_decode( $someText )
;
Upvotes: 4
Reputation: 31
I noticed some text editing operations, like deleting a character (by hitting Backspace button) are spliting edited text node into two. Hitting Space Bar at the end of such newly created text node is always resulting into
instead of normal space. I am calling normalize()
http://www.w3schools.com/jsref/met_node_normalize.asp to changed element after change:
CKEDITOR.on('instanceReady', function (ck) {
ck.editor.on("change", function (e) {
var sel = ck.editor.getSelection();
if (sel) {
var selected = sel.getStartElement();
if (selected && selected.$)
sel.getStartElement().$.normalize();
}
});
});
Upvotes: 3
Reputation: 666
I had the same problems creating some tables. What I saw was that if i created the tables with the css rule align="left"
the <p> </p>
are added, but if i changed the css rule to align="center"
i could edit the paragraphs out and they were not added again.
Upvotes: 0
Reputation: 379
There is another way that a non breaking space character can occur. By simply entering a space at the end of a sentence.
CKEditor escapes basic HTML entities along with latin and greek entities.
Add these config options to prevent this (you can also add them in your config file):
CKEDITOR.on( 'instanceCreated', function( event ) {
editor.on( 'configLoaded', function() {
editor.config.basicEntities = false;
editor.config.entities_greek = false;
editor.config.entities_latin = false;
editor.config.entities_additional = '';
});
});
These options will prevent CKEditor from escaping nbsp gt lt amp ' "
an other latin and greek characters.
Sources: http://docs.ckeditor.com/#!/api/CKEDITOR.config http://docs.ckeditor.com/source/plugin48.html#CKEDITOR-config-cfg-basicEntities
Upvotes: 11
Reputation: 1
If you're using PHP you can use the following :
preg_replace("/[\<]p[\>][\s]+ [\<][\/]p[\>]/" , " " , $pre_comment);
This will remove : "<p> </p>"
Enjoy :)
Maxwell
Upvotes: -3