1

IP、ホスト名、および日付を取得してテキスト ファイルに入れるスクリプトを作成しました。この情報を .php に表示する別のスクリプトを作成し、いくつかのテーブルを読みやすくしたいと考えました。

これは、完全に機能するファイルに書き込むために使用しているコードです。やりたいことを実行するためにそれを解析する方法がわかりません。

$logFile = 'IPLog.txt';
$fh = fopen($logFile,'a') or die("can't open file");
$ip = $_SERVER['REMOTE_ADDR'];
$fullhost = gethostbyaddr($ip);
$stringData = date('m/d/y | h:ia') . " - " . $ip . ":" . $fullhost . "\n";
fwrite($fh, $stringData);
fclose($fh);

出力は次のようになります。

04/06/13 | 午後 2 時 53 分 - xxx.xxx.xxx.xxx:xxx.comcast.net

スクリプトがファイルを読み取り、次のようなテーブルに表示するのを待っています。

IP Address      | Hostname          | Date        | Time
----------------|-------------------|-------------|-----------------------------
xxx.xxx.xxx.xx  | xxx.comcast.net   | 04/06/13    | 02:53pm
--------------------------------------------------------------------------------
xxx.xxx.xxx.xx  | xxx.comcast.net   | 04/06/13    | 02:53pm
--------------------------------------------------------------------------------
xxx.xxx.xxx.xx  | xxx.comcast.net   | 04/06/13    | 02:53pm
--------------------------------------------------------------------------------
xxx.xxx.xxx.xx  | xxx.comcast.net   | 04/06/13    | 02:53pm
--------------------------------------------------------------------------------

ですから、情報を表示する素敵な小さなテーブルを作成して、すばやく確認できるようにして、見栄えを良くしたいのです。

これが欲しい理由は特にありません。これは、テキスト ファイルを解析する方法の例としてのみ使用しています。私はそれが得意ではなかったので、それがどのように行われたかを本当に学びたいと思っています. ですから、必要に応じてこれを他のものに使用することもできます。

4

1 に答える 1

0

現在の出力を次のように変更します04/06/13 - 02:53pm - xxx.xxx.xxx.xxx - www.comcast.net。これにより、後で解析しやすくなります。したがって、現在のファイルで次の行を変更する必要があります。

$stringData = date('m/d/y - h:ia') . " - " . $ip . " - " . $fullhost . "\n";

テーブルにデータを表示するには、次を使用できます。

$logFile = 'IPLog.txt';
$lines = file($logFile); // Get each line of the file and store it as an array
$table = '<table border="1"><tr><td>Date</td><td>Time</td><td>IP</td><td>Domain</td></tr>'; // A variable $table, we'll use this to store our table and output it later !
foreach($lines as $line){ // We are going to loop through each line
    list($date, $time, $ip, $domain) = explode(' - ', $line);
    // What explode basically does is it takes a delimiter, and a string. It will generate an array depending on those two parameters
    // To explain this I'll provide an example : $array = explode('.', 'a.b.c.d');
    // $array will now contain array('a', 'b', 'c', 'd');
    // We use list() to give them kind of a "name"
    // So when we use list($date, $time, $ip, $domain) = explode('.', 'a.b.c.d');
    // $date will be 'a', $time will be 'b', $ip will be 'c' and $domain will be 'd'
    // We could also do it this way:
    // $data = explode(' - ', $line);
    // $table .= '<tr><td>'.$data[0].'</td><td>'.$data[1].'</td><td>'.$data[2].'</td><td>'.$data[3].'</td></tr>';
    // But the list() technique is much more readable in a way
    $table .= "<tr><td>$date</td><td>$time</td><td>$ip</td><td>$domain</td></tr>";
}
$table .= '</table>';
echo $table;
于 2013-04-06T22:52:26.977 に答える