自作youtubeというか、動画再生アプリというかサイト。PHP製。
とても便利。
毎日使っている。
これに検索履歴表示機能を実装した。
検索窓は前から実装していたけど、その下に直近5件の検索履歴を表示するようにした。
検索単語は「ボヘミアン」でも「Queen」でも「楽天」でも何でもいいけど、とにかく検索した単語は全てサーバ上のファイル(my_recent_search.txt)に落ちて、PHPではそのファイルを読んで直近履歴として表示する。
iPadでも使える。こんな感じ。右下に検索履歴が出る。
ソース(関連部分)はこれ。
検索単語(GREPWORD)を変数 $myGRE に格納して
サーバ内部のファイルをforeachするときに
ファイル名が $myGRE にマッチしなかったら読み飛ばす(continue)。
残ったファイル(検索されたファイル)を一覧で表示する画面の上に、検索窓と直近5件の履歴を出す。
ファイル(my_recent_search.txt)に落とすところもそれを読み込むところも全部シェル(bash)にやらせて、PHPはその結果を受け取ってるだけ。
ファイル書き込みや読み込みはPHPにも(関数として)用意されているけど、結局bashのほうが使い勝手がいい。でもまあ、そのうちWindowsサーバのPHPに移植することも考えれば、PHP謹製の読み書き関数で実装したほうがいいのかもしれないけど。
検索結果のボタンはbootstrap4(btn-outline-linfo)で装飾した(1650行目)。手軽にカッコいいボタンを作れるからbootstrapは便利。
保存・コピペ用
<!-- パネル部分 -->
<div class="tab-content mt-3" id="myTabContent">
<!--
リンクのコンテンツが入ります
-->
<!-- z-index検索GREPWORD実装 直近5件 20201226 -->
<div style="z-index: 9000; position: fixed; bottom: 30px; right: 3px;">
<form class="form-inline">
<div class="input-group mb-3">
<?php
if(!empty($_GET['GREPWORD'])) {
// PlaceHolderにセットする文字列strPH
$strPH=$_GET['GREPWORD'];
// 直近5件の検索履歴の表示実装
$commandRECENT = 'echo "' . "$myGRE" . '" >> my_recent_search.txt 2>&1';
// print '<b><font color="orange">' . "$commandRECENT" . 'が生成されました</font></b><br>';
// print 'exec($commandRECENT, $outputRECENT, $retRECENT);<br>';
// shell_exec("$commandRECENT");
// print '<br>';
exec($commandRECENT, $outputRECENT, $retRECENT);
} else {
$strPH='PDF検索ぅ';
}
?>
<input type="text" name="GREPWORD" class="form-control" placeholder="<?php print "$strPH"; ?>" aria-label="PDF検索ワード" aria-describedby="basic-addon1">
<div class="input-group-append">
<button class="btn btn-secondary" type="submit" id="btn-mysearch2">検索</button>
</div>
</div>
</form>
<?php // ここからforeachまでを↑のformに入れると動きおかしくなる
/// 直近5件表示
// $commandCATT = 'ls -rt /media/WD30EZRX/PT3 | grep ' . "$myGRE" . ' &';
// $commandCATT = 'cat my_recent_search.txt | tail -n 5 &';
$commandCATT = 'cat my_recent_search.txt | tail -n 5 | sort -r &';
exec($commandCATT, $outputCATT, $retCATT);
foreach($outputCATT as $CATT){
// print '<b><font color="orange">' . "$CATT" . '</font></b>';
print '<br>';
// print '<font size="3px"><a href="doLSglob.php?CHDIR=PT3&GREPWORD=' . "$CATT" . '&MKSORT=goMKSORT">' . "$CATT" . '</a></font>';
// print '<font size="3px"><a href="doLSglob.php?CHDIR=PT3&GREPWORD=' . "$CATT" . '&MKSORT=goMKSORT">' . "$CATT" . '</a></font>';
// print '<a href="#" class="btn btn-info" role="button">Link Button</a>';
print '<a href="doLSglob.php?CHDIR=PT3&GREPWORD=' . "$CATT" . '&MKSORT=goMKSORT" class="btn tline-info" role="button">' . "$CATT" . '</a>';
// print '<font size="3px"><a href="doLSglob.php?CHDIR=PT3&GREPWORD="' . "$CATT" . '"&MKSORT=goMKSORT"><img src="./icon_mp3.jpg" width="80px" height="auto"></a></font>';
}
?>
</div>