ユーザ用ツール

サイト用ツール

Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/5/5600cb9026df3d5a6f7d5951c1ddb52f.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/5/5600cb9026df3d5a6f7d5951c1ddb52f.metadata failed

php指定したフォルダの中のファイル中身を検索
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/5/5600cb9026df3d5a6f7d5951c1ddb52f.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/5/5600cb9026df3d5a6f7d5951c1ddb52f.xhtml failed

PHPで指定したフォルダ内のファイル中身を検索し、出力するプログラム

いくつパーツを掲載する。~

統括処理

// フォルダパス取得
$path = dirname(dirname(__FILE__));
# パスを指定する
$path .= "/asp";
//print_r($path);
//exit;


// 指定フォルダ内のすべてのPHPファイルを取得する
$fileArray = outputFileList($path);


// 多次元配列から単配列へ変換
$fileArray = array_flatten($fileArray);


$checkFileArray = array();
// ファイル毎開く、中身を一行ずつ取得する。
foreach($fileArray as $key => $value){


	// 中身を一行ずつ取得
	$fileDataArray = openFileData($value);

	// 検索対象ファイルとその行数を表示
	//echo $value . "  ";
	//print_r(count($fileDataArray));
	//echo "\r\n";

	// ファイル中身ないもの次へ
	if(count($fileDataArray) < 1){
		echo $value."\r\n". "ファイル中身取得できなかった。\r\n";
		continue;
	}

	// 取得したファイル中身をチェックする。
	//$checkFileArray[] = checkFileData($fileDataArray, $value);
	checkFileData($fileDataArray, $value);

}
// 終了
exit;

指定フォルダ内のすべてのPHPファイルを検索出す

function outputFileList($path){

	// ディレクトリでなければ終了
	if (!is_dir($path)) {
		echo "path nai";
		return false;
	}

	$tmp_dir = array();

	if ($handle = opendir($path)) {

		// 取得したパスを一つずつ見ていく
		while (false !== ($file = readdir($handle))) {

			// 自分自身と上位階層のディレクトリを除外
			if ('.' == $file || '..' == $file) {
				continue;
			}

			// パスを整形
			$tmp_path = $path . '/' . $file;

			// ディレクトリならば自分自身を呼び出し再起処理
			if (is_dir($tmp_path)) {

				$tmp_dir[$file] = outputFileList($tmp_path);
			}
			// ファイルならばパスを出力
			else if(is_file($tmp_path)) {

				$extension = pathinfo($tmp_path, PATHINFO_EXTENSION);
				if($extension == 'php'){
					$tmp_dir[$file] = $tmp_path;
					// ファイルを出力
					//echo $tmp_path. "\r\n";
					// echo "<br>";
				}
			}
		}
		// 閉じる
		closedir($handle);
	}

	return $tmp_dir;
}
 

空の配列を削除する。

function outputFileArray($fileArray) {
	foreach ($fileArray as $key => $value) {
		if ($value === null) {
			// 空文字出力
			//$fileArray[$key] = '';
		} elseif (is_array($value) && $key != 'templates_c') {
			// 再変換
			$fileArray[$key] = outputFileArray($value);
		} else {
			// そのまま出力
			$fileArray[$key] = $value;
		}
	}
	return $fileArray;
}

多次元配列から単配列へ変換

function array_flatten($array){
	$result = array();
	foreach($array as $key => $val){
		// 指定フォルダ排除
		if($key == 'templates_c'){
			continue;
		}
		// 配列整理
		if(is_array($val)){
			$result = array_merge($result, array_flatten($val));
		}else{
			$result[]=$val;
		}
	}
	return $result;
}

ファイル毎開く、中身を一行ずつ取得する。

function openFileData($filePath){
	// ファイル存在チェック
	if(!file_exists($filePath)){
		return false;
	}
	$fileDataArray = array();
	// ファイル開く
	$handle = @fopen($filePath, 'r');
	// 取得したパスを一つずつ見ていく
	while ($line = fgets($handle)) {
		if($line != ''){
			$fileDataArray[] = $line;
		}
	}
	// ファイル閉じる
	fclose($handle);

	return $fileDataArray;
}

取得したファイル中身をチェックする。 function checkFileData($fileDataArray, $filePath){

	// ファイル(配列情報)文字列に変換
	$fileData = implode("", $fileDataArray);
	$fileData = trim($fileData);
	$fileData = preg_replace("/\r|\n|\r\n/","",$fileData);

	// 通所コードのチェック
	// チェックデータ取得
	$checkDataArray = checkDataArray();
	// チェックデータ毎に判定処理
	foreach ($checkDataArray as $key => $vlaue){
		// チェック正規表現
		$pattern = "/(".$vlaue[0].").+(".$vlaue[1].").+/";
		if(preg_match($pattern, $fileData, $matches)){

			// 検出結果を表示する。
			//echo "下記のファイルの中に関連キーワードを発見\r\n";
			echo $filePath."\r\n";
			print_r($matches[1]);
			echo "  ";
			print_r($matches[2]);
			echo "\r\n";
		}
	}

}
php指定したフォルダの中のファイル中身を検索.txt · 最終更新: 2013/11/28 10:40 by luis_lee