论坛风格切换
  • 5978阅读
  • 1回复

[常用修复工具]替换主题内容和回复的特定字符 [复制链接]

上一主题 下一主题
离线太史慈
 

发帖
766
金币
626
威望
556
只看楼主 倒序阅读 使用道具 楼主  发表于: 2011-05-04
保存下面的文件为replace_content.php放在根目录下执行,记得修改下$old和$new,务必提前备分好文件哦!

  1. <?php
  2. error_reporting(0);
  3. define('P_W',1);
  4. define('PW_UPLOAD',1);
  5. define('R_P',getdirname(__FILE__));
  6. define('D_P',R_P);
  7. require_once(R_P.'require/common.php');
  8. include_once(D_P.'data/bbscache/config.php');
  9. //require_once(R_P.'admin/cache.php');
  10. $basename = 'http://'.$_SERVER['HTTP_HOST'].(isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']);
  11. @header("Content-Type:text/html; charset=$db_charset");
  12. include_once(D_P.'data/sql_config.php');
  13. if ($database=='mysqli' && Pwloaddl('mysqli')===false) {
  14. $database = 'mysql';
  15. }
  16. require_once Pcv(R_P."require/db_$database.php");
  17. $db = new DB($dbhost,$dbuser,$dbpw,$dbname,$PW,$charset,$pconnect);
  18. $action = $_GET['action'];
  19. $start = $_GET['start'];
  20. $s_c = $_GET['s_c'];
  21. if(!$action){
  22.     $action = 'tmsgs';
  23. }
  24. if(!$start){
  25.     $start = 0;
  26. }
  27. if(!$s_c){
  28.     $s_c = 0;
  29. }
  30. $percount = 1000;
  31. $old = "liudatxt.com";
  32. $new = "zhongtianwen.com";
  33. if ($action == 'tmsgs')//先替换主题内容
  34. {
  35.     $query = $db->query("SELECT tid,content FROM pw_tmsgs WHERE tid>$start ORDER BY tid LIMIT $percount");
  36.     while ($rt = $db->fetch_array($query))
  37.     {
  38. $lastid = $rt['tid'];
  39.         //$pw_tmsgs = GetTtable($rt['tid']);//分表尚未处理,一般用不到吧?
  40.         if(strpos($rt['content'],$old)!==false){
  41.             $rt['content'] = str_replace($old,$new,$rt['content']);
  42.             $db->update("UPDATE pw_tmsgs set content = '".addslashes($rt['content'])."' WHERE tid=".$rt['tid']);
  43.     $s_c++;
  44.         }
  45.     }
  46.     $maxid = $db->get_value("SELECT max(tid) FROM pw_tmsgs");
  47.     echo '当前'.$lastid.'<br />最大 '.$maxid;
  48.     if($maxid > $lastid){
  49. echo "<meta http-equiv='refresh' content='1;url=$basename?action=$action&start=$lastid&s_c=$s_c'>";
  50. }else{
  51. echo "<meta http-equiv='refresh' content='1;url=$basename?action=posts'>";
  52. }
  53. }
  54. elseif ($action == 'posts')//先替换回复内容
  55. {
  56.     $query = $db->query("SELECT tid,content FROM pw_posts WHERE pid>$start ORDER BY pid LIMIT $percount");
  57.     while ($rt = $db->fetch_array($query))
  58.     {
  59. $lastid = $rt['pid'];
  60.         if(strpos($rt['content'],$old)!==false){
  61.             $rt['content'] = str_replace($old,$new,$rt['content']);
  62.             $db->update("UPDATE pw_posts set content = '".addslashes($rt['content'])."' WHERE pid=".$rt['pid']);
  63.     $s_c++;
  64.         }
  65.     }
  66.     $maxid = $db->get_value("SELECT max(pid) FROM pw_posts");
  67.     echo '当前'.$lastid.'<br />最大 '.$maxid;
  68.     if($maxid > $lastid){
  69. echo "<meta http-equiv='refresh' content='1;url=$basename?action=$action&start=$lastid&s_c=$s_c'>";
  70. }else{
  71. echo '替换结束';exit;
  72. echo "<meta http-equiv='refresh' content='1;url=$basename?action=member'>";
  73. }
  74. }
  75. elseif ($action == 'member')//再替换用户内容
  76. {
  77.     $query = $db->query("SELECT uid,icon,signature FROM pw_members WHERE uid>$start LIMIT $percount");
  78.     while ($rt = $db->fetch_array($query))
  79.     {
  80. $lastid = $rt['pid'];
  81.         if(strpos($rt['icon'],$old)!==false){
  82.             $rt['icon'] = str_replace($old,$new,$rt['icon']);
  83.             $db->update("UPDATE pw_members set icon = '".addslashes($rt['icon'])."' WHERE uid=".$rt['uid']);
  84.     $s_c++;
  85.         }
  86.         if(strpos($rt['signature'],$old)!==false){
  87.             $rt['signature'] = str_replace($old,$new,$rt['signature']);
  88.             $db->update("UPDATE pw_members set signature = '".addslashes($rt['signature'])."' WHERE uid=".$rt['uid']);
  89.     $s_c++;
  90.         }
  91.     }
  92.     $maxid = $db->get_value("SELECT max(uid) FROM pw_members");
  93.     echo '当前'.$lastid.'<br />最大 '.$maxid;
  94.     if($maxid > $lastid){
  95. echo "<meta http-equiv='refresh' content='1;url=$basename?action=$action&start=$lastid&s_c=$s_c'>";
  96. }else{
  97.         echo '批量替换字符[结束]';exit;
  98. }
  99. }
  100. function getdirname($path=null){
  101. if (!empty($path)) {
  102. if (strpos($path,'\\')!==false) {
  103. return substr($path,0,strrpos($path,'\\')).'/';
  104. } elseif (strpos($path,'/')!==false) {
  105. return substr($path,0,strrpos($path,'/')).'/';
  106. }
  107. }
  108. return './';
  109. }
  110. ?>



[url=http://www.phpwind.com]phpwind[/url]
离线太史慈

发帖
766
金币
626
威望
556
只看该作者 沙发  发表于: 2011-11-15
如果嫌麻烦,也可以直接在require/bbscode.php
加一句
  1.     $message = str_replace("data/attachment/album","attachment/photo",$message);
  2.     $message = str_replace("data/attachment/forum","attachment",$message);


[url=http://www.phpwind.com]phpwind[/url]
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
提到某人:
选择好友
上一个 下一个