步驟:
1.因為找了很久沒有找到ECMS讀取文本的函數,而且每一條數據都要查詢和寫入一次數據庫,最好還是做一個本地環境,用自己的電腦來處理.我用的是APMServ,
2.先備份數據庫,保存到本地,備份帝國存文本的目錄 /d/txt/ 到本地,目錄最好也按照網站上的層次放置,如有變化,可以修改下面代碼中的路徑.
3.用帝國備份網恢復到本機一個數據庫中,如代碼中的babyucan
4.修改下面代碼中的相關數據庫配置.
5.運行提供的簡易轉換程序
6.提示處理完畢后,使用帝國備份王備份所處理的數據表,我寫的代碼中處理的是phome_ecms_news,然后把處理好的數據備份上傳,恢復數據即可.
程序只針對newstext字段處理,所以處理完后只備份新聞數據表就可以了.
代碼內容如下,大家可以先測試一下.
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
@set_time_limit(10000);//設置超時時間,越長越好
//********************* 程序開始 ********************
$kai = $_POST['kai'];
//配置數據庫參數
mysql_connect("localhost","root","");//本機數據庫用戶名和密碼
mysql_select_db("babyucan");//本機數據庫名,
mysql_query("set names 'gb2312'");
//數據表第一條信息的ID
$a=mysql_query("select id from phome_ecms_news order by id asc limit 1");
$num1= mysql_result($a,0);
//數據表最后一條信息的ID
$b=mysql_query("select id from phome_ecms_news order by id desc limit 1");
$num2= mysql_result($b,0);
if ($kai==1){
//循環逐條處理
for($i=$num1;$i<$num2;$i++){
??????? $sql="select newstext from phome_ecms_news 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)){???????
???????
??????????????? $url="d/txt/".$text.".php";//因為帝國存文本中有exit中斷,所以需要用讀文件的方法去讀取代碼,文本的路徑要正確,存在本文件所以目錄下的子目錄"d/txt/"下
??????????????? $temp=file($url);
??????????????? //echo substr($temp[0],12);
??????????????? //過濾帝國存文本生成的exit中斷代碼,使用文本中的內容替換數據庫中相應的數據值
??????????????? $wurl="update phome_ecms_news set newstext='".substr($temp[0],12)."' where id=".$i;
??????????????? $write=mysql_db_query("babyucan",$wurl);
???????
??????????????? }
??????? }
}
echo "OK,搞定!";
}
?>
<form method="post" action="index.php">
<input type=submit name=ok value="從<?=$num1?>開始處理,到<?=$num2?>結束.點擊開始處理">
<input type=hidden name="kai" value=1>
</form>