PHP - ファイルを読み込んで出力- さらに行数を指定する
- 1. 概要
- 2. ソース
1. 概要
前項で作成したものでは物足りなくなってきました・・・。
前項で作成したものでは、毎回ソース全行を出力してしまうのですが・・・。
全行でなく一部のみ出力したいことがあるのです。
ファイル指定時に start=n1、end=n2 として、start の行から出力を開始して、end がなければ末尾まで、あれば end の行まで出力させたいのです・・・。
やってみるか・・・。
2. ソース
書けたみたいなので、そのソースで表示します。
前半の変更の大きな部分。
$start = NULL;
$end = NULL;
if (isset($_GET['filename']))
{
$filename = $_GET['filename'];
}
else
{
print("ファイル名が指定されていません\n");
exit;
}
// 開始行・終了行があれば指定する
if (isset($_GET['start']))
{
$start = $_GET['start'];
}
if (isset($_GET['end']))
{
$end = $_GET['end'];
}
// ソースファイルを読みこんで改行で分割
$original = file_get_contents("$filename", FILE_USE_INCLUDE_PATH);
$expload = explode("\n", $original);
$document = "";
for ($i=0; $i<count($expload); $i++)
{
// 開始行が定義してあれば改行までは割愛
if ($start != NULL)
{
if ($i < $start-1)
{
continue;
}
}
// 終了行が定義してあれば終了行で終了
if ($end != NULL)
{
if ($i > $end-1)
{
break;
}
}
$document .= $expload[$i]."\n";
}
後半の変更部分。
開始行があれば、その行番号を起点として出力するようにしています。
// 開始行が定義してある場合はその行番号から開始
if ($start != NULL)
{
print('<pre class="line-numbers" data-start="'.$start.'"><code class="language-'.$ext.'">');
}
else
{
print('<pre class="line-numbers"><code class="language-'.$ext.'">');
}
|
|