帝国cms默认的文章模型newstext字段是以内容村文本格式存在的,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'");

//数据表第一条信息的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-z\d\/]*$/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>