Home > 5月, 2011

2011.05.26

PHPでテキストファイル合体

たくさんのテキストファイルをPHPで結合しました。
やっていることはテキストファイルを読み込んで、一行づつ送り出してるだけです。
テキストファイル結合自体は、フリーソフトを使う方法や、コマンドプロンプトでもできるようです。
今後の処理のためPHPでやります。

※追記 これだとログファイルがでかすぎるとメモリエラーが出るので、追々改変。

PHP:
  1. //logフォルダにtxtを放り込んで実行
  2.  
  3.  
  4. $dirAddress = "./log/";
  5. $serchFileWorld = "txt";
  6.  
  7. $tinfo=date("Ymd_His")//時間情報
  8. $fn=sprintf("./bindLogs/bind-%s.txt",$tinfo);
  9. $fp=fopen($fn,"ab");
  10.  
  11. $fnLog=sprintf("./bindLogs/bind-%s-writeLog.txt",$tinfo);
  12. $fpLog=fopen($fnLog,"ab");
  13.  
  14. $cntFile=0;
  15. $cntLine=0;
  16. $cntIndiviFile=0;
  17. $cntAll=0;
  18.  
  19. $d = dir($dirAddress)//検索対象ディレクトリ指定
  20. while (($entry = $d->read())) {  //ディレクトリ検索
  21.     if(eregi($serchFileWorld,$entry)){    //ファイル名にtxtが含まれているか
  22.  
  23.         $cntLine=0;
  24.         $cntIndiviFile=0;
  25.  
  26.         $line=file($dirAddress.$entry)//該当ファイル読み込み
  27.  
  28.         foreach ($line as $l ) {
  29.             fputs($fp,$l);
  30.             $cntIndiviFile++;
  31.         }
  32.  
  33.         $sayLoadOK = $entry."    ----LOAD OK----    line is    ".$cntIndiviFile;
  34.         echo $sayLoadOK;
  35.  
  36.  
  37.         $cntAll += $cntIndiviFile;
  38.         $cntFile++;
  39.  
  40.         $sayNow = "    NOW    ".$cntAll."    <br />";
  41.         echo $sayNow;
  42.        
  43.         $saying = $sayLoadOK.$sayNow."\n";
  44.         fputs($fpLog, $saying);
  45.  
  46.     }
  47. }
  48. fclose($fp);
  49.  
  50. $d->close();
  51.  
  52. $reFn = "bind_file".$cntFile."_line".$cntAll;
  53.  
  54. rename($fn, "./bindLogs/$reFn.txt");
  55.  
  56. $sayAll = "\n"."\n"."<br />"."<br />"."$reFn"."<br />"."    ALL LINE is    ---------    ".$cntAll;
  57. echo $sayAll;
  58.  
  59.  
  60. fclose($fpLog);
  61.  
  62. $reFnWriteLog = $reFn."_writeLog";
  63. rename($fnLog, "./bindLogs/$reFnWriteLog.txt");

勉強になったところは「ディレクトリ全てに処理を行う」部分

PHP:
  1. $d = dir($dirAddress)//検索対象ディレクトリ指定
  2. while (($entry = $d->read())) {}        //ディレクトリ検索

また↓の部分をゴニョゴニョしたら、一行ごとにパターンマッチで条件分岐もできるはず。

PHP:
  1. foreach ($line as $l ) {
  2.             fputs($fp,$l);
  3.             $cntIndiviFile++;
  4.         }

2011.05.15

【word2003】コメント&変更履歴を全部クリア(反映済み)にする手順

社内での原稿コネコネが終わって、クライアントに見せるまえに、キレイな状態にする方法メモ。

・メニューバーの「表示」→「ツールバー」→「チェック/コメント」
・「×マークアイコン」の右側▼メニュー→「ドキュメント内のすべてのコメントを削除」
・「チェックマークアイコン」の右側▼メニュー→「ドキュメント内のすべての変更を反映」

コメントは削除するもの、変更は反映するもの。