Php 复印及;将内容粘贴到TinyMCE输入结果中,并生成臃肿的HTML
我在各种项目中使用TinyMCE。我使用ATM的问题是,许多用户将Word或OpenOffice等源中的内容复制粘贴到TinyMCE输入中。这通常会导致代码臃肿(例如,Php 复印及;将内容粘贴到TinyMCE输入结果中,并生成臃肿的HTML,php,html,formatting,tinymce,copy-paste,Php,Html,Formatting,Tinymce,Copy Paste,我在各种项目中使用TinyMCE。我使用ATM的问题是,许多用户将Word或OpenOffice等源中的内容复制粘贴到TinyMCE输入中。这通常会导致代码臃肿(例如,等内容被OpenOffice接管)。TinyMCE的清理似乎并没有移除这些标签。在将文本粘贴到TinyMCE输入区域之前,是否有办法去除所有格式?或者有没有其他方法可以防止这种臃肿的代码,例如用PHP过滤it服务器端?我在预处理上使用以下C函数删除所有标记: strip_tags = function (str, allowed_
等内容被OpenOffice接管)。TinyMCE的清理似乎并没有移除这些标签。在将文本粘贴到TinyMCE输入区域之前,是否有办法去除所有格式?或者有没有其他方法可以防止这种臃肿的代码,例如用PHP过滤it服务器端?我在预处理上使用以下C函数删除所有标记:
strip_tags = function (str, allowed_tags) {
var key = '', allowed = false;
var matches = []; var allowed_array = [];
var allowed_tag = '';
var i = 0;
var k = '';
var html = '';
var replacer = function (search, replace, str) {
return str.split(search).join(replace);
};
// Build allowes tags associative array
if (allowed_tags) {
allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi);
}
str += '';
// Match tags
matches = str.match(/(<\/?[\S][^>]*>)/gi);
// Go through all HTML tags
for (key in matches) {
if (isNaN(key)) {
// IE7 Hack
continue; }
// Save HTML tag
html = matches[key].toString();
// Is tag not in allowed list? Remove from str!
allowed = false;
// Go through all allowed tags
for (k in allowed_array) { // Init
allowed_tag = allowed_array[k];
i = -1;
if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag) ;}
// Determine
if (i == 0) { allowed = true;
break;
}
}
if (!allowed) {
str = replacer(html, "", str); // Custom replace. No regexing
}
}
return str;
};
strip\u tags=函数(str,允许的\u标记){
var key='',allowed=false;
var匹配=[];允许的var_数组=[];
允许的var_标记=“”;
var i=0;
var k='';
var html='';
var replacer=函数(搜索、替换、str){
返回str.split(搜索)。join(替换);
};
//构建allowes标记关联数组
如果(允许的\u标记){
允许的_数组=允许的_标记匹配(/([a-zA-Z0-9]+)/gi);
}
str+='';
//匹配标签
matches=str.match(/(]*>)/gi);
//检查所有HTML标记
用于(输入匹配项){
如果(isNaN(键)){
//IE7黑客
继续;}
//保存HTML标记
html=匹配[key].toString();
//标签不在允许列表中吗?从str中删除!
允许=错误;
//检查所有允许的标签
对于(k在允许的_数组中){//Init
允许的_标记=允许的_数组[k];
i=-1;
如果(i!=0){i=html.toLowerCase().indexOf(“”);}
如果(i!=0){i=html.toLowerCase().indexOf('我知道这是一个opd问题,但为了其他可能正在搜索答案的人(像我一样!),TinyMCE现在包括控制粘贴到文本框中的内容的功能
在init调用中,添加“粘贴”插件,然后设置所需的任何选项,例如
tinyMCE.init({
...
plugins: "paste",
paste_auto_cleanup_on_paste : true,
paste_remove_styles: true,
paste_remove_styles_if_webkit: true,
paste_strip_class_attributes: "all",
paste_remove_spans : true,
...
});
你可以看到中的所有选项看起来都很棒。你必须试试。因此,基本上,如果我做对了,我们定义了一个函数来过滤所有非白名单HTML元素,它是通过tinyMCE init调用的。或者我有什么错误吗?它不是通过init调用的,而是在粘贴时调用的函数(预处理)是使用init定义的
tinyMCE.init({
...
plugins: "paste",
paste_auto_cleanup_on_paste : true,
paste_remove_styles: true,
paste_remove_styles_if_webkit: true,
paste_strip_class_attributes: "all",
paste_remove_spans : true,
...
});