min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

PHP+bash 文字列から単語を切り出す

自作PHPサイトに、検索履歴機能を実装した。

min117.hatenablog.com

 

こうなる。

 f:id:min117:20201229061147p:plain

しかし、自分がした検索の履歴を見るだけじゃ面白くない。最近見た動画から単語を拾って履歴に利用できればなお便利。

 

例えばこういう動画があったとして

www.youtube.com

f:id:min117:20201229062144p:plain

見た動画の最初の5文字【新垣結衣】を取り出して検索ボタンにしたい。

 

PHP内部でbashコマンドを発行して文字列から単語の切り出しを行う。

 

bash部分はこう。

$ tmpSTR=$(cat doTUBEDL.log | grep Destination | tail -n 1 | sed -e s/^.*:\ //g)

$ echo "$tmpSTR" | cut -c 1-18

orebibou.com

 

このbashコマンドをPHPから実行する。該当部分はこんな感じ。

$commandCATT2 = 'tmpSTR=$(cat doTUBEDL.log | grep Destination | tail -n 1 | sed -e s/^.*:\ //g) && echo "$tmpSTR" | cut -c 1-18';

f:id:min117:20201229063130p:plain

${tmpSTR:1:18} だとなぜかうまくいかなかった

 

なお

最新の文字検索履歴の配列($outputCATT)と

最近の動画検索履歴の配列($outputCATT2)とを結合するにはPHPの配列結合 array_merge()を使う

qiita.com

 

コピペ&保存用

        <?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);

 

            // 最新のyoutube-dlのログもcatする

            // $commandCATT2 =  'tmpSTR=$(cat doTUBEDL.log | grep Desti | tail -n 1 | sed -e s/^.*://g) && echo ${tmpSTR:0:5}';

            // $commandCATT2 =  'tmpSTR=$(cat doTUBEDL.log | grep Desti | tail -n 1 | sed -e s/^.*://g) && echo "$tmpSTR"';

            $commandCATT2 =  'tmpSTR=$(cat doTUBEDL.log | grep Desti | tail -n 1 | sed -e s/^.*:\ //g) && echo "$tmpSTR" | cut -c 1-18';

            // $commandCATT2 =  'tmpSTR=$(cat doTUBEDL.log | grep Desti | tail -n 1 | sed -e s/^.*://g) && echo "${tmpSTR:0:10}"';

            exec($commandCATT2, $outputCATT2, $retCATT2);

            // print_r($outputCATT2);

 

            // output配列の結合CATT_MERGE

            $outputCATT_M=array_merge($outputCATT, $outputCATT2);

 

            foreach($outputCATT_M as $CATT_M){

                // print '<b><font color="orange">' . "$CATT_M" . '</font></b>';

                print '<br>';

                // print '<font size="3px"><a href="doLSglob.php?CHDIR=PT3&GREPWORD=' . "$CATT_M" . '&MKSORT=goMKSORT">' . "$CATT_M" . '</a></font>';

                // print '<font size="3px"><a href="doLSglob.php?CHDIR=PT3&GREPWORD=' . "$CATT_M" . '&MKSORT=goMKSORT">' . "$CATT_M" . '</a></font>';

                // print '<a href="#" class="btn btn-info" role="button">Link Button</a>';

                print '<a href="doLSglob.php?CHDIR=PT3&GREPWORD=' . "$CATT_M" . '&MKSORT=goMKSORT" class="btn btn-outline-info" role="button">' . "$CATT_M" . '</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>';

            }

        ?>