之前存文本的数据是用的默许的文章模型,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'];
functionReadFiletext($filepath){
$filepath=trim($filepath);
$htmlfp=@fopen($filepath,"r");
$string=@fread($htmlfp,@filesize($filepath));
@fclose($htmlfp);
return$string;
}
functionGetTxtFieldText($pagetexturl){
$text=ReadFiletext($pagetexturl);
$text=substr($text,12);//去除exit
return$text;
}
//装备数据库参数
mysql_connect("localhost","root","");//本机数据库用户名和暗码
mysql_select_db("mydatabase");//本机数据库名,
mysql_query("setnames'utf8'");
//数据表第一条信息的ID
$a=mysql_query("selectidfromwecms_articleorderbyidasclimit1");
$num1=mysql_result($a,0);
//数据表最终一条信息的ID
$b=mysql_query("selectidfromwecms_articleorderbyiddesclimit1");
$num2=mysql_result($b,0);
if($kai==1){
//循环逐条处理
for($i=$num1;$i<$num2;$i++){
$sql="selectnewstextfromwecms_articlewhereid=".$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="updatewecms_article_data_1setnewstext1='".$text."'whereid=".$i;
$write=mysql_db_query("mydatabase",$wurl);
}
}
}
echo"OK,搞定!";
}
?>
<formmethod="post"action="index9.php">
<inputtype=submitname=okvalue="从<?=$num1?>开端处理,到<?=$num2?>完毕.点击开端处理">
<inputtype=hiddenname="kai"value=1>
</form>


声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!

原文地址:帝国CMS二次开发内容存文本转存数据库方法发布于2022-06-23 07:43:18

相关推荐