サーバー上においてあるaaa.logというログファイルがあり2<>3<>hatena のようなログが入っています。
たとえば引数から3番目の値を判別し(2<>3<>hatenaの場合hatena) ログ内にある初めの数字値(2<>3<>hatenaの場合2)を取得し表示させるスクリプトコードをお願いいたします。
function getlogValue($file_name,$word) {
$log = file ($file_name);
$j = ”0”;
for ($i = ”0”; $i < count($log); $i++) {
$log3 = explode (”<>”, $log[$i]);
if (ereg ($word, $log3[”2”])) {
$Value[$j] = $log3[”0”];
$j++;
}
}
return $Value;
}
こんな感じでいかがでしょうか?
Yahoo! JAPAN
URLはダミーです。
PHP4.3.11で動作テストしてます。
「”」「¥」「<」「>」は半角に置換してください。
ログファイル
aaa.log
1<>2<>atena
2<>3<>hatena
3<>2<>etc
検索するプログラム
search.php
<?
# ログファイル名指定
$logFileName = ”./aaa.log”;
# 検索対象文字の設定
$searchKey = ”hatena”;
# ファイルのオープン
$fp = fopen($logFileName, ”r”);
if($fp){
while (!feof($fp)){
$buffer = fgets($fp, 1024);
# 取得したレコードの分割
list ($code, $etc, $key) = split (’<>’, $buffer);
# 余分なコードの削除
$key = trim($key);
if($key == $searchKey){
echo ”Code: $code<br>¥n”;
}
}
}
?>
ご質問の内容をそのまま単純に書くとこんな感じです。
ログ解析に使われるのであればサブルーチン化するなど手を加えなければならないかと思います。
ありがとうございます。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k05.htm
PHP 基礎編5 - 文字列関数 substr、strlen、strpos、split、list、time、crypt - SAK Streets
文字列関数 list を使えばいいのではないでしょうか。
<?php
$fp = fopen(’./aaa.log’,’r’);
if ( $fp == null ) {
print ”[Error] aaa.log Terminated.”;
return false;
}
while ( $row = fgets( $fp, 1024 ) ) {
$row = trim( $row );
list( $first, $second, $third ) = explode(”<>”, $row);
//値が$thirdに入っています。
//print ”値は${third}¥n”;
print $first;
}
?>
ありがとうございました。
ありがとうございます。
あと数件回答があるので実際に動かして最もよかった回答にポイントを差し上げます。