Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[转换] [转载]phpBB2Discuz 转换程序

[复制链接]
tphs 发表于 2007-6-1 22:19:15 | 显示全部楼层 |阅读模式
原帖子
http://bbs.guoxue.com/viewthread ... p;extra=page%3D1###

phpBB2Discuz 转换程序

phpbb2.*升级到Discuz! 5.5.0
//
我们原来的国学论坛功能太少了,现在升级到Discuz! 5.5.0,效果还不错,基本上所有的信息全保留了!!
共享一下这次国学论坛转换所用的代码,个人认为和官方论坛上的提供的程序功能差不多 ,这个程序可以支持异机器之间的转换,不要求数据库在同一台机器上,
所有带有_s的变量表示数据源,带有_t后缀的变量表示目标数据,本程序暂不提供版主转换功能!
和官方提供的程序相比,本程序可多转换myposts和mythreads表,自动处理quote,[em]等标记
源论坛附件会被自动重命名和拷贝到相应的文件夹中。
呵呵,本人不提供程序正确的担保哦,如果丢失信息了,我也没法子!


主要函数:
//////////////////
convertForums();  //必须先运行这个转换
convertMsg($limit);
convertUser($limit); //如果出现错误,可修改username 为 binary 属性
convertAttachment($limit);
convertPosts($limit);
convertTopics($limit);
/////////////////






  1. <?php
  2. /*
  3. src=http://bbs.guoxue.com
  4. Author=zhanjun,gxbd
  5. version=1.0
  6. Date=2007-05-31
  7. */

  8. set_time_limit(0);

  9. echo "phpbb2.*升级到Discuz! 5.5.0\n";


  10. //////////////////////
  11. $cat_count=14;  //大分类数量 ,为零的话由程序自动判断
  12. $attpath="/var/www/html/bbs/files/"; //附件所在位置
  13. $debug=0; //==0 正式转换 ==1 测试
  14. $len=3000; //测试数据条数
  15. $adminid=2; //管理员UID
  16. $charset='GBK'; //字符集


  17. //数据源 GBK编码 phpbb2.2.*
  18. $host_s='localhost';
  19. $dbuser_s='root'  ;
  20. $dbpasswd_s='';
  21. $mydb_s='bbs';
  22. $prefix_s='phpbb_';
  23. $link_s=mysql_pconnect($host_s,$dbuser_s,$dbpasswd_s) or die("Could not connect  ".mysql_error($link_s)."connect s err\n");
  24. mysql_query("SET NAMES '".$charset."'",$link_s);
  25. ////////////////////

  26. ////////////////////////
  27. //目标数据 Discuz! 5.5.0
  28. $host_t='0.0.0.0';
  29. $dbuser_t='root'  ;
  30. $dbpasswd_t='';
  31. $prefix_t='bbs_';
  32. $link_t=mysql_pconnect($host_t,$dbuser_t,$dbpasswd_t,3306) or die("Could not connect  ".mysql_error($link_t)."connect t err\n");
  33. mysql_query("SET NAMES '".$charset."'",$link_t);

  34. $mydb_s='bbs';
  35. $mydb_t='bbs';
  36. mysql_select_db($mydb_s,$link_s) or die("Could not select s database");;
  37. mysql_select_db($mydb_t,$link_t) or die("Could not select t database");;

  38. ////////////////////////
  39. if($debug==0)
  40. {
  41. $limit="";
  42. echo "正式转换模式  \n";
  43. }
  44. else
  45. {
  46. $limit=" LIMIT 0,$len";
  47. echo $limit ."  测试模式\n" ;
  48. }

  49. /////////////////////////
  50. /////////用户表转换函数
  51. function convertUser($limit=" LIMIT 0,30 "){
  52. global $prefix_t,$prefix_s,$link_s,$link_t,$adminid;
  53. mysql_query("TRUNCATE TABLE `".$prefix_t."members` ",$link_t);
  54. mysql_query("TRUNCATE TABLE `".$prefix_t."memberspaces` ",$link_t);
  55. mysql_query("TRUNCATE TABLE `".$prefix_t."memberfields` ",$link_t);
  56. $sql_s ="select *  from ".$prefix_s."users order by user_id  $limit";


  57. //echo $sql_s."\n";
  58. $result_s=mysql_query($sql_s,$link_s) or print(mysql_error($link_s)."\n".$sql_s."\n");
  59. while($r_s=mysql_fetch_array($result_s)){

  60.      $_username=$r_s['username'];

  61.      if (empty($_username) || htmlspecialchars($_username) != $_username || (strlen($_username)>=15)) {
  62.             echo "非法用户名:uid = ".$r_s['user_id'] ." username = $_username 不能被转换!!\r\n";
  63.             //continue;
  64.               }

  65.     if ($r_s['user_avatar_type'] == 2){
  66.             $avatar = $r_s['user_avatar'];

  67.         } else if ($r_s['user_avatar_type'] == 1 || $r_s['user_avatar_type'] == 3){
  68.             $avatar = 'customavatars/'.$r_s['user_avatar'];

  69.         }


  70.           //等级转换
  71.          if ($r_s['user_rank']>=1)
  72.            {
  73.            $groupid=11+$r_s['user_rank'];
  74.            if ($groupid>=15) $groupid=15;
  75.            //15==论坛元老 14==高级
  76.            }
  77.           else
  78.           {

  79.             if ($r_s['user_posts'] >=10)
  80.                 $groupid=11; //注册用户
  81.              else
  82.                 $groupid=10;

  83.             if ($r_s['user_posts'] >=100)
  84.                 $groupid=13; //高级用户

  85.           }

  86.              $isadmin=0;

  87.           if ($r_s['user_id']==$adminid)
  88.               {
  89.                   $groupid=1; //
  90.                 $isadmin=1;
  91.                }

  92.           $sigstatus=$r_s['user_sig'] ? 1 : 0;


  93.           $sql_t="INSERT INTO `".$prefix_t."members` (`uid`, `username`, `password`, `secques`, `gender`, `adminid`, `groupid`, `groupexpiry`, `extgroupids`, `regip`, `regdate`, `lastip`, `lastvisit`, `lastactivity`, `lastpost`, `posts`, `digestposts`, `oltime`, `pageviews`, `credits`, `extcredits1`, `extcredits2`, `extcredits3`, `extcredits4`, `extcredits5`, `extcredits6`, `extcredits7`, `extcredits8`, `email`, `bday`, `sigstatus`, `tpp`, `ppp`, `styleid`, `dateformat`, `timeformat`, `pmsound`, `showemail`, `newsletter`, `invisible`, `timeoffset`, `newpm`, `accessmasks`, `editormode`, `customshow`, `xspacestatus`) VALUES (".$r_s['user_id'].", '".addslashes(trim($r_s['username']))."', '".$r_s['user_password']."', '', 0, ".$isadmin.", ".$groupid.", 0, '', '', ".$r_s['user_regdate'].", '', ".$r_s['user_lastvisit'].", ".$r_s['user_session_time'].", 0, ".$r_s['user_posts'].", 0, 0, 0, ".$r_s['user_posts'].", ".$r_s['user_posts'].", 0, 0, 0, 0, 0, 0, 0, '".$r_s['user_email']."','0000-00-00', ".$sigstatus.", 0, 0, 0, '', 0, 1, 1, 1, 0, '9999', 0, 0, 2, 26, 0);";
  94.           //echo $sql_t."\n";

  95.           if (!$result_t=mysql_query($sql_t,$link_t) )
  96.           {
  97.           //echo $sql_t."\n";
  98.           continue; //去除重复错误
  99.           }


  100.           mysql_free_result($result_t);
  101.           $sql_t="INSERT INTO `".$prefix_t."memberspaces` (`uid`,`style`, `description`, `layout`, `side`) VALUES (".$r_s['user_id'].", 'default', '', '[userinfo][calendar][myreplies][myfavforums]    [myblogs][mythreads]    ', 1)";
  102.           //echo $sql_t."\n";
  103.           $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");
  104.           mysql_free_result($result_t);
  105.           $sql_t="INSERT INTO `".$prefix_t."memberfields` (`uid`, `nickname`, `site`, `alipay`, `icq`, `qq`, `yahoo`, `msn`, `taobao`, `location`, `customstatus`, `medals`, `avatar`, `avatarwidth`, `avatarheight`, `bio`, `sightml`, `ignorepm`, `groupterms`, `authstr`, `spacename`) VALUES (".$r_s['user_id'].", '', '', '', '".addslashes($r_s['user_icq'])."', '', '".addslashes($r_s['user_yim'])."', '".addslashes($r_s['user_msnm'])."', '', '', '', '', '".$avatar."', 83, 92, '', '".addslashes(parsesign ( convertbbcode( $r_s['user_sig'] ) ) )."', '', '', '', '')";
  106.           $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");
  107.           mysql_free_result($result_t);


  108.             }

  109.          echo "用户表转换完成,共转换记录".mysql_num_rows($result_s)."条\n";
  110.          mysql_free_result($result_s);


  111. }
  112. /////////////////////////
  113. /////////短消息表转换函数
  114. function convertMsg($limit=" LIMIT 0,30 "){



  115. global $prefix_t,$prefix_s,$link_s,$link_t;

  116. mysql_query("TRUNCATE TABLE `".$prefix_t."pms` ",$link_t);

  117. //order by s.privmsgs_from_userid

  118. $sql_s ="select s.*,t.*, u.username  from ".$prefix_s."privmsgs as s ,".$prefix_s."privmsgs_text  as t ,".$prefix_s."users as u where  (t.privmsgs_text_id=s.privmsgs_id) and (u.user_id=s.privmsgs_from_userid)  $limit";

  119. //echo $sql_s."\n";

  120. $result_s=mysql_query($sql_s,$link_s) or print(mysql_error($link_s)."-s\n");

  121. while($r_s=mysql_fetch_array($result_s)){

  122.   $box=$r_s['privmsgs_type'];

  123.   if ($box=='0')
  124.    $boxtype='inbox';
  125.   else
  126.    $boxtype='outbox';

  127.   $sql_t="INSERT INTO `".$prefix_t."pms` (`pmid`, `msgfrom`, `msgfromid`, `msgtoid`, `folder`, `new`, `subject`, `dateline`, `message`, `delstatus`) VALUES (".$r_s['privmsgs_id'].", '".addslashes($r_s[username])."', ".$r_s['privmsgs_from_userid'].", ".$r_s['privmsgs_to_userid'].", '".$boxtype."', 0, '".addslashes($r_s['privmsgs_subject'])."', ".$r_s['privmsgs_date'].", '".addslashes(trim(convertbbcode($r_s['privmsgs_text'])) )."', 0)";

  128.   //echo $sql_t."\n";

  129.   $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");
  130.   mysql_free_result($result_t);
  131.              }

  132.   echo "短消息转换完成,共转换记录".mysql_num_rows($result_s)."条\n";
  133.   mysql_free_result($result_s);
  134. }

  135. //新旧版面对应关系 +$cat_count;

  136. function convertForums($limit=" LIMIT 0,30 "){

  137. global $prefix_t,$prefix_s,$link_s,$link_t,$cat_count;


  138. mysql_query("TRUNCATE TABLE `".$prefix_t."forums` ",$link_t);
  139. mysql_query("TRUNCATE TABLE `".$prefix_t."forumfields` ",$link_t);
  140. $sql_s ="SELECT * FROM `".$prefix_s."categories` ORDER BY `cat_id` ASC " ;

  141. //echo $sql_s."\n";

  142. $result_s=mysql_query($sql_s,$link_s) or print(mysql_error($link_s)."\n".$sql_s."\n");

  143. while($r_s=mysql_fetch_array($result_s)){

  144.           //大分类转换

  145.           $sql_t="INSERT INTO `".$prefix_t."forums` (`fid`, `fup`, `type`, `name`, `status`, `displayorder`, `styleid`, `threads`, `posts`, `todayposts`, `lastpost`, `allowsmilies`, `allowhtml`, `allowbbcode`, `allowimgcode`, `allowanonymous`, `allowshare`, `allowpostspecial`, `allowspecialonly`, `alloweditrules`, `recyclebin`, `modnewposts`, `jammer`, `disablewatermark`, `inheritedmod`, `autoclose`, `forumcolumns`, `threadcaches`, `allowpaytoauthor`, `alloweditpost`, `simple`) VALUES (".$r_s['cat_id'].", 0, 'group', '".$r_s['cat_title']."', 1, ".$r_s['cat_order'].", 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0)";
  146.           //echo $sql_t."\n";
  147.           $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");

  148.           $sql_t="INSERT INTO `".$prefix_t."forumfields` VALUES (".$r_s['cat_id'].", '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')";

  149.           $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");


  150.              }

  151.         if ($cat_count=='')
  152.           $cat_count=mysql_num_rows($result_s);

  153.          echo "大分类表转换完成,共转换记录".$cat_count."条\n";



  154. $sql_s ="SELECT * FROM `".$prefix_s."forums` ORDER BY `forum_id` ASC" ;

  155. //echo $sql_s."\n";

  156. $result_s=mysql_query($sql_s,$link_s) or print(mysql_error($link_s)."\n".$sql_s."\n");

  157. while($r_s=mysql_fetch_array($result_s)){

  158.      $fname=strlen($r_s['forum_name']) < 50 ? $r_s['forum_name'] : cutstr(htmlspecialchars(trim(@strip_tags($r_s['forum_name']))),50);
  159.           $fid=$r_s['forum_id']+$cat_count;
  160.           $gid=$r_s['cat_id'];
  161.           //子分类转换
  162.           $sql_t="INSERT INTO `".$prefix_t."forums` (`fid`, `fup`, `type`, `name`, `status`, `displayorder`, `styleid`, `threads`, `posts`, `todayposts`, `lastpost`, `allowsmilies`, `allowhtml`, `allowbbcode`, `allowimgcode`, `allowanonymous`, `allowshare`, `allowpostspecial`, `allowspecialonly`, `alloweditrules`, `recyclebin`, `modnewposts`, `jammer`, `disablewatermark`, `inheritedmod`, `autoclose`, `forumcolumns`, `threadcaches`, `allowpaytoauthor`, `alloweditpost`, `simple`) VALUES (".$fid.", ".$gid.", 'forum', '".$fname."', 1, ".$r_s['forum_order'].", 0, ".$r_s['forum_topics'].", ".$r_s['forum_posts'].", 0, '', 1, 0, 1, 1, 0, 1, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0)";
  163.           //echo $sql_t."\n";
  164.           $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");
  165.           mysql_free_result($result_t);
  166.           $sql_t="INSERT INTO `".$prefix_t."forumfields` VALUES (".$fid.", '".addslashes($r_s['forum_desc'])."', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')";
  167.           $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");

  168.           mysql_free_result($result_t);

  169.              }

  170.          echo "子分类表转换完成,共转换记录".mysql_num_rows($result_s)."条\n";
  171.          mysql_free_result($result_s);

  172. }
  173. ////////////////////////
  174. function convertTopics($limit=" LIMIT 0,30 "){

  175. echo "topic表转换\n";
  176. global $prefix_t,$prefix_s,$link_s,$link_t,$cat_count;

  177. mysql_query("TRUNCATE TABLE `".$prefix_t."threads`  ",$link_t)  or print(mysql_error($link_t))."\n";
  178. mysql_query("TRUNCATE TABLE `".$prefix_t."mythreads` ",$link_t)  or print(mysql_error($link_t))."\n";

  179. $sql_s ="SELECT t.*,u.username  FROM ".$prefix_s."topics as t ,  ".$prefix_s."users AS u  where u.user_id=t.topic_poster $limit";

  180. // echo $sql_s."\n";


  181. $result_s=mysql_query($sql_s,$link_s) or print(mysql_error($link_s)."\n".$sql_s."\n");

  182. while($r_s=mysql_fetch_array($result_s)){

  183.           //threads 转换
  184.   $fid= $r_s['forum_id']+$cat_count;

  185.   if($r_s['topic_first_post_id']==$r_s['topic_last_post_id'])
  186.    {
  187.    $lastposter=addslashes($r_s['username']);
  188.    }
  189.   else
  190.     {
  191.     $lastposter=htmlspecialchars(getusername($r_s['topic_last_post_id']));
  192.     }


  193.   $isgood=$r_s['topic_good'] ? 1 : 0;//精华帖子,如果没有装相应的mod,可以不管这个



  194.   $sql_t="INSERT INTO `".$prefix_t."mythreads` (`uid`, `tid`, `dateline`) VALUES (".$r_s['topic_poster'].", ".$r_s['topic_id'].", ".$r_s['topic_time'].")";
  195.   $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");
  196.   mysql_free_result($result_t);
  197.   //echo $sql_t."\n";


  198.   $sql_t="INSERT INTO `".$prefix_t."threads` VALUES (".$r_s['topic_id'].", ".$fid.", 0, 0, 0, 0, '".addslashes($r_s['username'])."', ".$r_s['topic_poster'].", '".addslashes(strip_tags($r_s['topic_title']))."', ".$r_s['topic_time'].", ".$r_s['topic_time'].", '".$lastposter."', ".$r_s['topic_views'].", ".$r_s['topic_replies'].", ".$r_s['topic_type'].", 0, ".$isgood.", 0, 0, 0, ".$r_s['topic_attachment'].", 0, 0, ".($r_s['isok']-1).", 0, 0)";
  199.   $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");
  200.   mysql_free_result($result_t);

  201.      }

  202.   echo "topic表转换完成,共转换记录".mysql_num_rows($result_s)."条\n";
  203.   mysql_free_result($result_s);

  204.   }

  205. ///////////////////////

  206. function convertPosts($limit=" LIMIT 0,30 "){

  207.   echo "posts表转换\n";

  208. global $prefix_t,$prefix_s,$link_s,$link_t,$cat_count;

  209. mysql_query("TRUNCATE TABLE `".$prefix_t."posts`  ",$link_t) or print(mysql_error($link_t))."\n";
  210. mysql_query("TRUNCATE TABLE `".$prefix_t."myposts` ",$link_t) or print(mysql_error($link_t))."\n";

  211. $sql_s="SELECT p.*,t.post_subject, t.post_text, u.username FROM ".$prefix_s."posts AS p, ".$prefix_s."posts_text AS t, ".$prefix_s."users AS u WHERE ( p.`post_id` = t.post_id ) AND ( p.poster_id = u.user_id)
  212.   order by t.post_id  $limit ";

  213. //echo $sql_s."\n";


  214. $result_s=mysql_query($sql_s,$link_s) or print(mysql_error($link_s)."\n".$sql_s."\n");

  215. while($r_s=mysql_fetch_array($result_s)){

  216.   //posts转换
  217.   $fid= $r_s['forum_id']+$cat_count;

  218.   $ip=decode_ip($r_s['poster_ip']);

  219.   $sql_t="INSERT INTO `".$prefix_t."posts` (`pid`, `fid`, `tid`, `first`, `author`, `authorid`, `subject`, `dateline`, `message`, `useip`, `invisible`, `anonymous`, `usesig`, `htmlon`, `bbcodeoff`, `smileyoff`, `parseurloff`, `attachment`, `rate`, `ratetimes`) VALUES (".$r_s['post_id'].", ".$fid.", ".$r_s['topic_id'].", 0, '".addslashes($r_s['username'])."',".$r_s['poster_id'].",'".addslashes($r_s['post_subject'])."', ".$r_s['post_time'].", '".addslashes(convertbbcode($r_s['post_text']))."', '".$ip."', 0, 0, 0, 0, 0, 0, 0, ".$r_s['post_attachment'].", 0, 0)";

  220.   //echo $sql_t."\n";

  221.   $result_t=mysql_query($sql_t,$link_t) or print(mysql_error($link_t)."\n".$sql_t."\n");

  222.   mysql_free_result($result_t);



  223.   $sql_t="INSERT INTO `".$prefix_t."myposts` (`uid`, `tid`, `pid`, `position`, `dateline`) VALUES (".$r_s['poster_id'].", ".$r_s['topic_id'].", ".$r_s['post_id'].", 2, ".$r_s['post_time'].")";

  224. if (!$result_t=mysql_query($sql_t,$link_t) )
  225.           {
  226.           //echo $sql_t."\n";
  227.            //仅第一个回复写入mypost
  228.           continue;
  229.           }

  230.   //print(mysql_error($link_t)."\n".$sql_t."\n");

  231.   mysql_free_result($result_t);

  232.   // echo $sql_t."\n";



  233.     }

  234.   echo "posts表转换完成,共转换记录".mysql_num_rows($result_s)."条\n";
  235.   mysql_free_result($result_s);



  236.   /////////////////////////////





  237. }




  238. ///////////////////////
  239. //附件转换
  240. function convertAttachment($limit=" LIMIT 0,30 "){
  241.   echo "附件表转换\n";
  242. global $prefix_t,$prefix_s,$link_s,$link_t,$cat_count,$attpath,$debug;

  243. mysql_query("TRUNCATE TABLE `".$prefix_t."attachments` ",$link_t);

  244. $sql_s ="SELECT s.*,t.*, p.topic_id FROM `".$prefix_s."attachments` as s,".$prefix_s."attachments_desc as t ,".$prefix_s."posts as p where (s.attach_id=t.attach_id ) and (s.post_id=p.post_id) ORDER BY s.attach_id ASC $limit" ;

  245. echo $sql_s."\n";

  246. $result_s=mysql_query($sql_s,$link_s) or print(mysql_error($link_s)."\n".$sql_s."\n");

  247. while($r_s=mysql_fetch_array($result_s)){

  248.           //大分类转换


  249.           $topic_id=$r_s['topic_id'];
  250.           $year=date("y",$r_s['filetime']);
  251.           $month=date("m",$r_s['filetime']);
  252.           $dir="month_".$year.$month;
  253.           $attname=$dir."/".MD5($r_s['physical_filename']).".".$r_s['extension'];

  254.           //批量修改附件名称和位置

  255.           if ( !is_dir($dir))  {

  256.             mkdir($dir);

  257.           }

  258.           $cmd="cp ".$attpath.$r_s['physical_filename']." ".$attname;

  259.           $isimage    =    in_array($r_s['mimetype'], array('image/pjpeg', 'image/gif', 'image/bmp', 'image/png')) ? 1 : 0;

  260.           if ($debug==0) system($cmd);

  261.           $sql_t="INSERT INTO `".$prefix_t."attachments` (`aid`, `tid`, `pid`, `dateline`, `readperm`, `price`, `filename`, `description`, `filetype`, `filesize`, `attachment`, `downloads`, `isimage`, `uid`, `thumb`, `remote`) VALUES ('', ".$topic_id.", ".$r_s['post_id'].", ".$r_s['filetime'].", 0, 0, '".addslashes($r_s['real_filename'])."', '".addslashes($r_s['comment'])."', '".$r_s['mimetype']."', ".$r_s['filesize'].", '".$attname."', ".$r_s['download_count'].", ".$isimage.", ".$r_s['user_id_1'].", 0, 0)";

  262.           $result_t=mysql_query($sql_t,$link_t) or die(mysql_error($link_t)."\n".$sql_t."\n");

  263.          }

  264.          echo "附件表转换完成,共转换记录".mysql_num_rows($result_s)."条\n";
  265.          mysql_free_result($result_s);
  266. }




  267. function cutstr($string, $length) {
  268.     $wordscut = '';
  269.     if(strlen($string) > $length) {
  270.         for($i = 0; $i < $length - 3; $i++) {
  271.             if(ord($string[$i]) > 127) {
  272.                 $wordscut .= $string[$i].$string[$i + 1];
  273.                 $i++;
  274.             } else {
  275.                 $wordscut .= $string[$i];
  276.             }
  277.         }
  278.         return $wordscut;
  279.     }
  280.     return $string;
  281. }


  282. function convertbbcode($message) {
  283.     $searcharray1 = array(
  284.         '<i>',
  285.         '</i>',
  286.         '[REPLY]',
  287.         '[/REPLY]',
  288.         '</align>',
  289.         '<BR>'
  290.     );

  291.     $replacearray1 = array(
  292.         '[i]',
  293.         '[/i]',
  294.         '[hide]',
  295.         '[/hide]',
  296.         '[align]',
  297.         '\n',

  298.     );

  299.     $searcharray2 = array(
  300.         "/(\[[^\]]*?)(\:\w+)?]/is",
  301.         "/\<P align=([^\[\<]+?)\>/is"
  302.     );

  303.     $replacearray2 = array(
  304.         "\\1]",
  305.         "[align=\\1]"
  306.     );

  307.       $message=preg_replace("/\[quote.*?\]/","[quote]",$message);
  308.       $message=preg_replace("/\[em.*?\]/",":)",$message);

  309.     return preg_replace($searcharray2, $replacearray2, str_replace($searcharray1, $replacearray1, $message));
  310. }

  311. function decode_ip($int_ip) {
  312.     $hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
  313.     return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
  314. }

  315. function pid2uid($uid) {
  316.     return $uid ? @mysql_result(mysql_query("SELECT poster_id FROM `".$prefix_s."posts` WHERE post_id='$uid' LIMIT 1"), 0) : 0;

  317.     die($uid);

  318. }

  319. function pid2tid($uid) {
  320.     return $uid ? @mysql_result(mysql_query("SELECT topic_id FROM `".$prefix_s."posts` WHERE post_id='$uid' LIMIT 1"), 0) : 0;

  321. }
  322. function getusername($uid) {
  323.     $uid= pid2uid($uid);
  324.     return $uid ? @mysql_result(mysql_query("SELECT username FROM  `".$prefix_s."users` WHERE user_id='$uid' LIMIT 1"), 0) : 0;
  325. }


  326. ///下面这些功能函数直接修改至discuzz!网上的一个程序

  327. function parsesign($sign) {

  328.     $searcharray = array(
  329.         '[/color]', '[/size]', '[/font]', '[/align]', '[b]', '[/b]',
  330.         '[i]', '[/i]', '[u]', '[/u]', '[list]', '[list=1]', '[list=a]',
  331.         '[list=A]', '[*]', '[/list]', '[indent]', '[/indent]'
  332.     );

  333.     $replacearray = array(
  334.         '</font>', '</font>', '</font>', '</p>', '<b>', '</b>', '<i>',
  335.         '</i>', '<u>', '</u>', '<ul>', '<ol type=1>', '<ol type=a>',
  336.         '<ol type=A>', '<li>', '</ul></ol>', '<blockquote>', '</blockquote>'
  337.     );

  338.     $pregfind = array(
  339.         "/\[url\]\s*(www.|https?:\/\/|ftp:\/\/|gopher:\/\/|news:\/\/|telnet:\/\/|rtsp:\/\/|mms:\/\/|callto:\/\/|ed2k:\/\/){1}([^\["']+?)\s*\[\/url\]/ie",
  340.         "/\[url=www.([^\["']+?)\](.+?)\[\/url\]/is",
  341.         "/\[url=(https?|ftp|gopher|news|telnet|rtsp|mms|callto|ed2k){1}:\/\/([^\["']+?)\](.+?)\[\/url\]/is",
  342.         "/\[email\]\s*([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\s*\[\/email\]/i",
  343.         "/\[email=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\](.+?)\[\/email\]/is",
  344.         "/\[color=([^\[\<]+?)\]/i",
  345.         "/\[size=([^\[\<]+?)\]/i",
  346.         "/\[font=([^\[\<]+?)\]/i",
  347.         "/\[align=([^\[\<]+?)\]/i",
  348.         "/\s*\[quote\][\n\r]*(.+?)[\n\r]*\[\/quote\]\s*/is",
  349.         "/\s*\[code\](.+?)\[\/code\]\s*/ies",
  350.         "/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
  351.         "/\[img=(\d{1,3})[x|\,](\d{1,3})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies"
  352.     );
  353.     $pregreplace = array(
  354.         "cuturl('\\1\\2')",
  355.         "<a href="http://www.\\1" target="_blank">\\2</a>",
  356.         "<a href="\\1://\\2" target="_blank">\\3</a>",
  357.         "<a href="mailto:\\1@\\2">\\1@\\2</a>",
  358.         "<a href="mailto:\\1@\\2">\\3</a>",
  359.         "<font color="\\1">",
  360.         "<font size="\\1">",
  361.         "<font face="\\1">",
  362.         "<p align="\\1">",
  363.         "<div class="altbg2" style="margin: 2em; margin-top: 3px; padding: 10px; border: ".INNERBORDERWIDTH."px solid ".BORDERCOLOR."; word-break: break-all">\\1</div>",
  364.         "<div class="altbg2" style="margin: 2em; margin-top: 3px; clear: both; padding: 10px; padding-top: 5px; border: ".INNERBORDERWIDTH."px solid ".BORDERCOLOR."; word-break: break-all">\\1</div>",
  365.         "bbcodeurl('\\1', '<img src="%s" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=\'Click here to open new window\\nCTRL+Mouse wheel to zoom in/out\';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=\'hand\'; this.alt=\'Click here to open new window\\nCTRL+Mouse wheel to zoom in/out\';}" onclick="if(!this.resized) {return true;} else {window.open(\'%s\');}" onmousewheel="return imgzoom(this);" alt="" />')",
  366.         "bbcodeurl('\\3', '<img width="\\1" height="\\2" src="%s" border="0" alt="" />')"
  367.     );

  368.     return daddslashes(str_replace($searcharray, $replacearray, preg_replace($pregfind, $pregreplace, stripslashes($sign))));
  369. }

  370. function bbcodeurl($url, $tags) {
  371.     if(!preg_match("/<.+?>/s", $url)) {
  372.         if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'ftp://', 'rtsp:/', 'mms://'))) {
  373.             $url = 'http://'.$url;
  374.         }
  375.         return str_replace(array('submit', 'logging.php'), array('', ''), sprintf($tags, $url, addslashes($url)));
  376.     } else {
  377.         return '&nbsp;'.$url;
  378.     }
  379. }

  380. function cuturl($url) {
  381.     $length = 65;
  382.     $urllink = "<a href="".(substr(strtolower($url), 0, 4) == 'www.' ? "http://$url" : $url).'" target="_blank">';
  383.     if(strlen($url) > $length) {
  384.         $url = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  385.     }
  386.     $urllink .= $url.'</a>';
  387.     return $urllink;
  388. }

  389. function daddslashes($string) {
  390.     if(is_array($string)) {
  391.         foreach($string as $key => $val) {
  392.             $string[$key] = daddslashes($val);
  393.         }
  394.     } else {
  395.         $string = addslashes($string);
  396.     }
  397.     return $string;
  398. }

  399. convertForums();  //必须先运行这个转换
  400. convertMsg($limit);
  401. convertUser($limit); //如果出现错误,可修改username 为 binary 属性
  402. convertAttachment($limit);
  403. convertPosts($limit);
  404. convertTopics($limit);

  405. mysql_close($link_s);
  406. mysql_close($link_t);

  407. echo "ok\n";

  408. ?>

复制代码
回复

使用道具 举报

bmli 发表于 2007-6-8 23:01:13 | 显示全部楼层
谢谢。。。。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-11-15 19:09 , Processed in 0.101877 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表