ディレクトリにある全ソースの末尾に1行追加

いろいろHTMLを見直していたら
多数のソースの末尾に1行追加
する必要が生じた。

Javascriptは、ファイルのロードは出来ても
出力ができ無ない。
そこで、こんなものを作ってみた。

● HTML

<!DOCTYPE html>
<html>
<head>
<title>ソースの末尾にコードを追加するツール</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Description" content="ソースの末尾にコードを追加するツール" />
<script type="text/javascript" src="/files/jquery.js"></script>
<script type="text/javascript">
//******************************************************
//  ソースの末尾にコードを追加するツール
//******************************************************
$(document).ready(function(){
  $("button").click(function(){
    indir = $("#indir").val();
    otdir = $("#otdir").val();
    // テンプレートデータ入力
    $.ajax({
      type: "GET",
      url: "lineAdd.php",			// データ入力
      data: {
             "indir" : indir,
             "otdir" : otdir
            },
      dataType: "text",
      success: dataProc,
      error: function(req,msg,err){
      alert("input error " + msg);
    }
  });
});

  function dataProc(data){
    $("#output").html(data);
  }
})
</script>

</head>
<body>
<h1>ソースの末尾にコードを追加するツール</h1>
<div>
入力ソースのディレクトリ名: <br />
<input type="text" size="20" id="indir" name="indir" value="/w3c/sql/in/" />
</div>
<br/>
<div>
出力ソースのディレクトリ名: <br />
<input type="text" size="20" id="otdir" name="otdir" value="/w3c/sql/out/" />
</div>
<br/>
<button>処理実行</button><br /><br />
<div id="output"></div>
</body>
</html>

● php

<?php
	
	/***********************************************************************
	   指定ディレクトリ(/web/xxx/in/)配下のファイル名を配列で返します
	***********************************************************************/
	function getProg($dirname){
		// ディレクトリのオープン
		$dir = dir($dirname);
		//var_dump($dir);
		// g:/w3c 配下のディレクトリを入力
		$cnt = 0;
		while 1)$file = $dir->read( !== false){
			if(is_file($dirname . $file)){					// ファイル以外は無視
			  if($file != ".." && $file != "."){		// 「.」、「..」は無視
			  	//echo $file . "<br/>";
					$info = pathinfo($file);						// path情報取得
					if($info['extension'] == "html"){		// 拡張子の判定取得
						$pArry[$cnt] = $file;							// ファイル名を設定
						$cnt++;
					}
			 	}
			}
		}
		//echo (count($pArry) . "<br/>");
		return $pArry;
	}

	/***********************************************************************
	   Main
	***********************************************************************/
	// 入力ソースのディレクトリ名(/web/dom/in/)
	if(isset($_GET['indir'])) {
		$indir = $_GET['indir'];
	} else {
		die ("引数に indir の指定がありません !");
	}
	//echo "dir名=" . $indir . "<br/>";	// <-- Debug
	
	// 出力ソースのディレクトリ名(/web/dom/out/)
	if(isset($_GET['otdir'])) {
		$otdir = $_GET['otdir'];
	} else {
		die ("引数に otdir の指定がありません !");
	}
	//echo "otdir名=" . $otdir . "<br/>";	// <-- Debug
	
	//**********************************************************************
	// w3schoolのソースを抽出
	$pArry = getProg($indir);
	$num = count($pArry);
	$wtbl = '<table id="res">';
	for($i = 0; $i < $num; $i++){
		$file = file_get_contents($indir.$pArry[$i]);
		$src  = mb_convert_encoding($file,"utf-8", "auto");
		// ソースの末尾に1行追加する
		$src .= '<script src="/w3c/common/procSeqCheck.js"></script>';
		// ファイル出力
	 	$otfile = $otdir . $pArry[$i];
	 	$flen  = file_put_contents($otfile,$src);
		$wtbl .= '<tr><td class="sou">' . $pArry[$i] . '</td><td class="byt">' . $flen . ' bytes</td></tr>';
	}
	echo $wtbl .= "</table>";
?>

これが、どうしても必要な訳は後日に。

References   [ + ]

1. $file = $dir->read(