CKEditor unwanted   characters

后端 未结 10 866
误落风尘
误落风尘 2020-12-02 08:13

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

相关标签:
10条回答
  • 2020-12-02 08:42

    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?):

    1. Automatic filling of empty blocks. This can be disabled in the config:

      config.fillEmptyBlocks = false;
      
    2. Automatic insertion when pressing TAB-key. This can be disabled in the config:

      config.tabSpaces = 0;
      
    3. 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);
      
    4. 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)

    0 讨论(0)
  • 2020-12-02 08:44

    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 );

    0 讨论(0)
  • This is a bad solution

    config.basicEntities = false;
    
    • Because it does not allow you to insert the JS code in the form as text. Like that <script type="text/javascript" src="/scripts/redactor/ckeditor/ckeditor.js"></script>
    • In addition, empty blocks like <p>&nbsp;</p> сan not specify an indent in the text since the character &nbsp; will be deleted (config.fillEmptyBlocks = true;)

    This is the right solution

    $text = preg_replace("#([^>])&nbsp;#ui", "$1 ", $text);
    
    • This is a PHP function that replaces all the characters &nbsp; on a space, except those that are inside the tag like <p>&nbsp;</p>
    • The function code is not the most elegant, you can suggest your own version.
    0 讨论(0)
  • 2020-12-02 08:47

    Add this to your config.js

    config.enterMode = CKEDITOR.ENTER_BR,
    
    0 讨论(0)
提交回复
热议问题