【 PHP 】PHP8に入門してみた 140日目 PHPの基本 ( 組み込み関数 タブ区切りとか、テキスト読み込み another)
PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。
組み込み関数
タブ区切りテキスト読み込み アナザー fgets関数
fgets
はテキストファイルから1行ずつデータを取得します。
fgetsvcs
のように取得した1行のデータをさらに分割・・・といったことはしません。
ただシンプル故に自由度も高いです。
もちろんfgetscsv
のようなタブ栗木テキストの読み込みも実現できます。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>アクセスログ</title>
<!-- Bootstrapを有効化 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
</head>
<body>
<table class="table">
<thead>
<tr>
<th>アクセス日時</th>
<th>スクリプト名</th>
<th>ユーザーエージェント</th>
<th>リンク元のURL</th>
</tr>
</thead>
<tbody>
<?php
// ファイルを読み取り専用でオープン
$file = fopen('access.log', 'r');
// ファイルを共有ロック
flock($file, LOCK_SH);
// 行単位でテキストを読み込み&タブ文字で分割
while ($fline = fgets($file, 1024)) {
// タブに分割を自身で実装!
$line = explode("\t", trim($fline));
print '<tr>';
// 分割した結果を順に出力
foreach ($line as $value) {
print '<td>' . $value . '</td>';
}
print '</td>';
}
// ロックの解除
flock($file, LOCK_UN);
// ファイルをクローズ
fclose($file);
?>
</tbody>
</table>
</body>
</html>
タブ区切りテキスト読み込み アナザー file関数
file
関数はテキストデータを配列として一気に読み込みます。
そう・・・ドカン(!!!)と読み込みドカン(!!!!)とメモリを逼迫します。注意しましょう。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>アクセスログ</title>
<!-- Bootstrapを有効化 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
</head>
<body>
<table class="table">
<thead>
<tr>
<th>アクセス日時</th>
<th>スクリプト名</th>
<th>ユーザーエージェント</th>
<th>リンク元のURL</th>
</tr>
</thead>
<tbody>
<?php
$file = FIle('access.log', FILE_IGNORE_NEW_LINES);
foreach ($file as $fline) {
$line = explode("\t", trim($fline));
print '<tr>';
// 分割した結果を順に出力
foreach ($line as $value) {
print '<td>' . $value . '</td>';
}
print '</tr>';
}
?>
</tbody>
</table>
</body>
</html>
メモ
ドカン!!!は注意です。
ディスカッション
コメント一覧
まだ、コメントがありません