我的问题在于CKEditor
,我在提交数据时会添加\n
。
使用简单的方式获取数据:
CKEDITOR.instances['contentBox'].getData()
在DB中提交后的数据示例:
<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
我删除了一些验证码&amp;因为它并不重要。
答案 0 :(得分:3)
这可能会有所帮助。
CKEDITOR.on( 'instanceReady', function( ev )
{
ev.editor.dataProcessor.writer.setRules( 'p',
{
indent : false,
breakBeforeOpen : true,
breakAfterOpen : false,
breakBeforeClose : false,
breakAfterClose : true
});
});
答案 1 :(得分:2)
看起来这可能是您的解决方案:
答案 2 :(得分:2)
这可能有点远,但我认为这很可能不是ckEditor的设置(因为我过去广泛使用过ckEditor,并没有遇到过这样的问题),而是一个功能(改变)您正在使用的ajax库或数据库库的character 10
和character 13
到\n
表示法。无论哪种方式,记录和检查在哪一点chr(13)
首先被\n
替换,如果它在ajax库中,那么只有在PHP代码中解析它才有意义,如果它是在你的数据库脚本中,你需要在那里更改它(我不会太惊讶,因为我知道那些喜欢在数据库中没有“隐藏”字符的人,比如换行符)。当然,如果您尝试将换行符设置为有效格式,如果您根本不关心换行符Lee Taylor
,那么这个答案就会出现。
答案 3 :(得分:1)
请参阅此ckeditor输出格式化程序:http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Output_Formatting
此答案也可能有所帮助:Removing unwanted newline characters when adding <p> in CKEditor
答案 4 :(得分:1)
我知道这是一个老话题,但我遇到了同样的问题,只是想分享我的解决方案。
我使用jquery的ajax方法,将数据发布到我的php脚本,内容分隔线更改为\ n。
这是我的(解决方法)解决方案,我在php脚本中执行此操作,然后将数据解析到数据库:
if (strpos($content,'\n') !== false) {
$content = str_replace('\n', chr(13), $content);
}