问题:
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>
有没有办法避免这种行为?
答案 0 :(得分:5)
最简单的方法:禁用拼写检查程序(scayt - 键入时拼写检查)
$CKEditor->config['removePlugins'] ='scayt'; // comma separated if many
如果您想让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