CKEditor inserta \n automáticamente

Mi problema es con CKEditor, agrega \n cuando envío datos.

Para obtener los datos que estoy usando simplemente:

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

Ejemplo de datos después de enviar en la base de datos:

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

Todo está bien, solo quiero cancelar el \n. No quiero usar REGEX u otras funciones de PHP que lo eliminen. Prefiero la solución a través de la configuración de CKEditor.

EDITAR ::

CKEditor no es el problema (mira David Mulder respuesta).

Código Ajax que creé (probablemente el problema):

$('#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
    }
}

¿Qué podría estar mal aquí?

EDITAR 2 ::

Estoy usando CodeIgniter marco de referencia.

Parte del controlador:

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

parte del modelo 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;
    }

Codificación: UTF-8

El campo content en la base de datos se define como TEXT

Eliminé un código de validación, etc. porque no es importante.

preguntado el 04 de julio de 12 a las 00:07

¿Puede mostrar la parte donde procesa y almacena los datos en la base de datos? el carácter 13 es simplemente \n pero si aparecen como \n literales en la base de datos. podría ser la forma en que procesa los datos tiene el problema. -

Agregado. No veo ningún problema con el código, pero tal vez me estoy perdiendo algo.. -

¿El código de validación cambia $data['content']? además, si magic_quotes está activado, me pregunto si podría conducir al carácter \n en combinación con mysql_real_escape_string. No estoy seguro de esto. pero esta ENCENDIDO? -

He limpiado su código AJAX usando recomendaciones de JSLint. Si eso ayuda, házmelo saber. ¡Salud! -

5 Respuestas

Esto puede resultar útil.

CKEDITOR.on( 'instanceReady', function( ev )
   {
      ev.editor.dataProcessor.writer.setRules( 'p',
         {
            indent : false,
            breakBeforeOpen : true,
            breakAfterOpen : false,
            breakBeforeClose : false,
            breakAfterClose : true
         });
   });

Respondido 13 Jul 12, 08:07

Parece que esta podría ser tu solución:

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

Respondido 04 Jul 12, 00:07

Ahí no se resolvió el problema. Dijo que usó nl2br() cuando obtiene datos. Solo quiero eliminar el '\ n' antes de insertarlo en la base de datos. Ya tengo <br /> or <p> en el código. - Luis

Esto podría ser una posibilidad un poco remota, pero creo que es muy probable que no sea una configuración de ckEditor (ya que usé mucho ckEditor en el pasado y no encontré tal problema), sino más bien una función (cambiando character 10 y character 13 En el correo electrónico “Su Cuenta de Usuario en su Nuevo Sistema XNUMXCX”. \n notación) de la biblioteca ajax que está utilizando o la biblioteca de la base de datos. De cualquier manera, registre e inspeccione en qué punto chr(13) es reemplazado por el \n en primer lugar, y si está en la biblioteca ajax, entonces solo tiene sentido analizarlo nuevamente en su código php y si está en el script de su base de datos, entonces deberá cambiarlo en algún lugar dentro de allí (no estaría demasiado sorprendido , ya que sé de personas que prefieren no tener caracteres 'ocultos' en su base de datos como saltos de línea). Por supuesto, esta respuesta solo es válida si está tratando de que los saltos de línea estén en el formato válido, si simplemente no le importan los saltos de línea. Lee Taylor respuesta sería el lugar para ir.

Respondido 06 Jul 12, 12:07

En primer lugar, gracias, después de algunas pruebas, el problema no es el CKEditor como dijiste. Creo que es algo con Ajax (estoy usando jQuery para esto) porque la acción funciona bien si no uso ajax. De todos modos, el código ajax es muy simple (edité mi publicación principal y la publiqué allí). No veo ningún problema con el código, ¿tiene alguna sugerencia? - Luis

En ese caso, simplemente debe analizarlo nuevamente en el lado del backend. Por cierto, ¿estás usando una solicitud GET en lugar de una solicitud POST, porque en una solicitud GET un carácter de salto de línea es imposible con seguridad? - david mulder

contestado el 23 de mayo de 17 a las 12:05

Sé que este es un tema antiguo, pero enfrenté el mismo problema y solo quería compartir mi solución.

Estoy usando el método ajax de jquery para publicar los datos en mi script php, y las líneas de corte del contenido se cambian a \n.

Aquí está mi solución (alternativa), hago esto en el script php, antes de analizar los datos en la base de datos:

if (strpos($content,'\n') !== false) {
    $content = str_replace('\n', chr(13), $content);
}

Respondido 27 Abr '15, 14:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.