卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11201本站已运行3223

帝国CMS二次开发内容存文本转存数据库方法

之前存有文本的数据是用的默认的文章模型,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);
[email protected]($filepath,"r");
[email protected]($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'");
//数据表第一条信息的ID
$a=mysql_query("select id from wecms_article order by id asc limit 1");
$num1= mysql_result($a,0);
//数据表最后一条信息的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,搞定!";
}
?>

已经开始处理,至<?=$num2?>完结.点击已经开始处置">

卓越飞翔博客
上一篇: 帝国CMS熊掌号缩略图调用方法
下一篇: 帝国CMS二次开发后台查询信息百度是否收录
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏