CKEditor过度格式化纯文本

时间:2011-09-15 14:45:52

标签: php linux ckeditor

问题:

CKEditor正在向纯文本添加大量<span>标记,例如下面的示例。

代码:

设置是一个php页面,调用ckeditor并将条目保存到PostgreSQL表中。我相信CKEditor上的大多数设置都是默认设置。这是一些代码:

include ('./ckeditor/ckeditor.php') ;
$CKEditor = new CKEditor() ;
$CKEditor->returnOutput = true;
$CKEditor->basePath = '/ckeditor/';
$CKEditor->config['width'] = 560;
$CKEditor->config['height'] = 300;
$CKEditor->textareaAttributes =
                array("cols" => 90, "rows" => 70);
$CKEditor->config['DefaultLanguage'] = "sv" ;
//$CKEditor->config['EnterMode'] = CKEDITOR.ENTER_BR;
$config['toolbar'] = array(
        array( 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', '-' ),
        array( 'Image', 'Link', 'Unlink', '-', 'Table', 'NumberedList','BulletedList' )
);
$config['skin'] = 'v2';

示例输入/输出(在源中):

输入:

En hel del av er

变为:

En <span data-scayt_word="hel" data-scaytid="2">hel</span> del 
<span data-scayt_word="av" data-scaytid="3">av</span> 
<span data-scayt_word="er" data-scaytid="4">er</span>

有没有办法避免这种行为?

3 个答案:

答案 0 :(得分:5)

最简单的方法:禁用拼写检查程序(scayt - 键入时拼写检查)

$CKEditor->config['removePlugins'] ='scayt'; // comma separated if many

How to remove unused plugins

如果您想让SCAYT可用,但阻止该功能自动开启:

$CKEditor->config['scayt_autoStartup'] = false;

但这是一种奇怪的行为,你如何从ckeditor实例中检索内容?只是尝试从firebug获取数据以查看不脏的内容:

console.log( CKEDITOR.instances.your_instance_name.getData() );

答案 1 :(得分:2)

如果您仍然想要它就可以关闭插件来解决输出问题,你可以在php中清理输出:

$output = preg_replace('/<span data-scayt_word="[^"]+" data-scaytid="[0-9]*">([^<]+)<\/span>/','$1',$input);

*归功于regro的balrok

答案 2 :(得分:1)

我也有这个问题,如果你想清理html-source你可以使用这个sed命令:

cat scaytPolluted.html | sed -r 's/<span data-scayt_word="[^"]+" data-scaytid="[0-9]*">([^<]+)<\/span>/\1/g' > clean.html