帝国CMS二次开发内容存文本转存数据库方法
2020-04-10 站长 站长日志
之前存文本的数据是用的默认的文章模型,newstext字段存储在主表,现在需要将其转换为数据库格式,存储在副表,多亏“夏威夷海盗”的帖子,http://bbs.phome.net/showthread-13-81898-0.html
参考这篇帖子的方法做了测试,基本上是可以的,但是存在问题,主要是php的file函数将文本读取后是以数组形式存在的,几乎每段文字存储到一个数组字段中,按照帖子提供的方案最终只能转化第一个数组中的第一位,后来参考帝国程序提供的几个函数稍加修改,完成了这个工作;
代码如下
<?php
error_reporting
(E_ERROR | E_WARNING | E_PARSE);
@set_time_limit(1000000);
//设置超时时间,越长越好
//********************* 程序开始 ********************
//说明:需要现在帝国后台模型设置的地方,在附表设置一个newstext1字段,等数据导入成功之后,再将原newstext字段删除,并将newstext1字段修改为newstext。
//400条数据,大概也就一秒钟左右;
$kai
=
$_POST
[
'kai'
];
function
ReadFiletext(
$filepath
){
$filepath
=trim(
$filepath
);
$htmlfp
=@
fopen
(
$filepath
,
"r"
);
$string
=@
fread
(
$htmlfp
,@
filesize
(
$filepath
));
@fclose(
$htmlfp
);
return
$string
;
}
function
GetTxtFieldText(
$pagetexturl
){
$text
=ReadFiletext(
$pagetexturl
);
$text
=
substr
(
$text
,12);
//去除exit
return
$text
;
}
//配置数据库参数
mysql_connect(
"localhost"
,
"root"
,
""
);
//本机数据库用户名和密码
mysql_select_db(
"mydatabase"
);
//本机数据库名,
mysql_query(
"set names 'utf8'"
);
//<a href="http://www.11px.cn/tags/sjb/" target="_blank">数据表</a>第一条信息的ID
$a
=mysql_query(
"select id from wecms_article order by id asc limit 1"
);
$num1
= mysql_result(
$a
,0);
//<a href="http://www.11px.cn/tags/sjb/" target="_blank">数据表</a>最后一条信息的ID
$b
=mysql_query(
"select id from wecms_article order by id desc limit 1"
);
$num2
= mysql_result(
$b
,0);
if
(
$kai
==1){
//循环逐条处理
for
(
$i
=
$num1
;
$i
<
$num2
;
$i
++){
$sql
=
"select newstext from wecms_article where id="
.
$i
;
if
(
$result
=mysql_query(
$sql
)){
$r
=mysql_fetch_object(
$result
);
$text
=
$r
->newstext;
//判断是否是存文本的信息
if
(
strlen
(
$text
)==42 && preg_match(
"/^[0-9a-zd/]*$/i"
,
$text
)){
$pagetexturl
=
"d/txt/"
.
$text
.
".php"
;
//因为帝国存文本中有exit中断,所以需要用读文件的方法去读取代码,文本的路径要正确,存在本文件所以目录下的子目录"d/txt/"下
$text
=GetTxtFieldText(
$pagetexturl
);
//过滤帝国存文本生成的exit中断代码,使用文本中的内容替换数据库中相应的数据值
$wurl
=
"update wecms_article_data_1 set newstext1='"
.
$text
.
"' where id="
.
$i
;
$write
=mysql_db_query(
"mydatabase"
,
$wurl
);
}
}
}
echo
"OK,搞定!"
;
}
?>
<form method=
"post"
action=
"index9.php"
>
<input type=submit name=ok value=
"从<?=$num1?>开始处理,到<?=$num2?>结束.点击开始处理"
>
<input type=hidden name=
"kai"
value=1>
</form>
上一篇:帝国CMS熊掌号缩略图调用方法
下一篇:帝国CMS的MIP模板制作教程