tinymce是一个轻量级的基于浏览器的所见即所得编辑器,由JavaScript写成。以下我将为大家介绍如何使用JavaScript的Ajax、配合使用php将tinymce中编写的文章经过转码后顺利存储进MySQL数据库。(将文章数据库表设计为只有两个字段,一个是int型的自增长id字段,另一个是text类型的article字段)
第一步:在你的网站根目录(或者其他网站目录也行)下新建一个editor.html文件,编辑代码如下:
1 |
|
这个文件将tinymce文章编辑器插件成功应用到我们的页面当中,并添加了一个用于提交文章到数据库的“提交”按钮。
其中引入的event.js文件代码如下,应将其置于同一目录下。它是一个为DOM添加事件处理的兼容脚本。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/**
* 为DOM添加事件处理的兼容脚本
* /
var EventUtil = {
// 添加句柄
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
}
else if (element.attachEvent) {
element.attachEvent('on'+type, handler);
}
else {
element['on'+type] = handler;
}
}
}
其中引入的htmlcode.js文件代码如下,同样将其置于editor.html同一目录下。它是一个实现html转码的脚本。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26/**
* 用浏览器内部转换器实现
* javascript处理HTML的Encode(转码)和Decode(解码)
*/
var HtmlUtil = {
// 用浏览器内部转换器实现html转码
// 首先动态创建一个容器标签元素,如DIV,
// 然后将要转换的字符串设置为这个元素的innerText(ie支持)
// 或者textContent(火狐,google支持),最后返回这个元素的innerHTML,
// 即得到经过HTML编码转换的字符串了。
htmlEncode: function (html) {
var div = document.createElement('div');
div.appendChild(document.createTextNode(html));
return div.innerHTML;
},
// 用浏览器内部转换器实现html解码
// 首先动态创建一个容器标签元素,如DIV,
// 然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持),
// 最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),
// 即得到经过HTML解码的字符串了。
htmlDecode: function (text) {
var div = document.createElement('div');
div.innerHTML = text;
return div.innerText || div.textContent;
}
}
第二步:将以下代码插入到editor.html文件的底部,其实就是一些用script标签包起来的JavaScript代码。
1 | EventUtil.addHandler(document.getElementById('handin'), 'click', function () { |
第三步:编写articleToDB.php文件实现文章插入MySQL数据库,并将其置于editor.html同一目录下。
1 |
|
以上三步便是利用JavaScript的Ajax、配合使用php将tinymce中编写的文章经过转码后顺利存储进MySQL数据库的全过程,需要注意的点有以下几个:
1. html代码必须经过转码后才能插入数据库;
2. 字符串’\\’长度为1而不是2;
3. 正则表达式匹配字符串时并不匹配起转义字符作用的反斜杠’\’;
4. 在插入MySQL数据库时,3个转义字符转义一个字符