1

我的问题是CKEditor,它会\n在我提交数据时添加。

要获取我正在使用的数据:

CKEDITOR.instances['contentBox'].getData()

在数据库中提交后的数据示例:

<p>\n   Heloo<br />\n   How are you?</p>\n
<p>\n   Another Subject<br />\n My name is Luis</p>\n

一切都很好,只是想取消\n. 我不想使用 REGEX 或其他 PHP 函数来删除它。我更喜欢通过 CKEditor 的配置解决方案。

编辑 ::

CKEditor 不是问题(看David Mulder答案)。

我创建的 Ajax 代码(可能是问题):

$('#edit').live('click', function() {
    if ($("#formValue").valid())
    {
        $('.simplebox').slideUp(200, function() {
            $('body').animate({scrollTop:140}, 350, function() {
                $('#loading-edit').slideDown(300, function() {
                    $.ajax({
                        type: "POST",
                        dataType: "json",
                        url: "../new_lesson_proccess/",
                        data: getDataToPost(),
                        success: function(data){

                            if (data.success == true)
                            {
                                $('#loading-edit').fadeOut(200, function() {
                                    $('.name_news_success').html($('input[name=name]').val());
                                    $('#successfull-edit').fadeIn(200);
                                });
                            }

                        }
                    });
                });
            });
        });
    }
})

function getDataToPost()
{
    var value = CKEDITOR.instances['valuecontent'].getData();

    return {
        id: $('input[name=news_id]').val(),
        tags : $('#tags').textext()[0].tags()._formData,
        name: $('input[name=name]').val(),
        content: value
    }
}

这里有什么问题?

编辑 2::

我正在使用CodeIgniter框架。

控制器部分:

public function new_lesson_proccess()
    {
        // # POST to Array
        $data = array(
            'content' => $this->input->post('content', FALSE)
        );

        $dataExport = array(
            'success' => $this->lessons_model->news_lesson($data)
        );

        echo json_encode($dataExport);
    }

部分模型lessons_model

function new_lesson($data)
    {
        $dataInsert = array(
            'content' => mysql_real_escape_string($data['content'])
        );

        if ($this->db->affected_rows($this->db->insert('web_lessons', $dataInsert)) == 1)
            return true;
        else
            return false;
    }

编码:UTF-8

数据库中的字段content定义为TEXT

我删除了一些验证代码等,因为它并不重要。

4

5 回答 5

3

这可能会有所帮助。

CKEDITOR.on( 'instanceReady', function( ev )
   {
      ev.editor.dataProcessor.writer.setRules( 'p',
         {
            indent : false,
            breakBeforeOpen : true,
            breakAfterOpen : false,
            breakBeforeClose : false,
            breakAfterClose : true
         });
   });
于 2012-07-13T07:05:44.983 回答
2

这可能有点远,但我认为这很可能不是 ckEditor 的设置(因为我过去广泛使用 ckEditor,并且没有遇到这样的问题),而是一个功能(更改character 10和表示您正在使用的 ajax 库或数据库库。无论哪种方式,记录并检查哪个点被替换为character 13\nchr(13)\n首先,如果它在 ajax 库中,那么只有在你的 php 代码中解析它才有意义,如果它在你的数据库脚本中,那么你需要在里面的某个地方更改它(我不会太惊讶,据我所知,有些人喜欢在数据库中没有“隐藏”字符,例如换行符)。当然,此答案仅在您尝试使换行符采用有效格式时才有效,如果您根本不关心换行符Lee Taylor答案将是去的地方。

于 2012-07-06T11:21:33.440 回答
2

看起来这可能是您的解决方案:

http://dev.ckeditor.com/ticket/3260

于 2012-07-03T23:39:49.987 回答
1

请参阅此 ckeditor 输出格式化程序:http ://docs.cksource.com/CKEditor_3.x/Developers_Guide/Output_Formatting

这个答案也可能会有所帮助:Removing不需要的换行符时添加 <p> in CKEditor

于 2012-07-10T23:43:37.263 回答
1

我知道这是一个老话题,但我遇到了同样的问题,只是想分享我的解决方案。

我使用 jquery 的 ajax 方法,将数据发布到我的 php 脚本中,并且内容断线更改为 \n。

这是我的(解决方法)解决方案,在将数据解析到数据库之前,我在 php 脚本中执行此操作:

if (strpos($content,'\n') !== false) {
    $content = str_replace('\n', chr(13), $content);
}
于 2015-04-27T13:14:41.410 回答