XAMPP-PHPを使ったRECBOXのファイルリスト作成補助ツール(3)

旧RECBOXと新RECBOXでは、ファイルリストの表示項目が少し異なります。新旧切り替えできるようにしました。

旧RECBOXには「再生時間」の項目がありません。将来ファームウェアの更新で変更になる可能性はありますが、13/10/14現在のファームではそのようになっています。そこで、一部修正して、旧RECBOXにも対応するように変更しました。

新旧フォーマットを合わせるため、旧RECBOXで存在しない「再生時間」のフィールドは空白での残すようにしました。

●新旧切り替え

入力ページ(html)のほうにチェックボックスを付け、新旧を選択できるようにしました。新RECBOXのときはチェックを入れ、旧RECBOXの場合はチェックを外します。

表示側のページ(php)ではセッション変数で、チェックの状態を受け取り、ファイル情報の取り込み部分を切り替えます。

●テキストの入力ページ(get1a.html)

コードを示します。11行目にチェックボックスを追加して、7行目のフォームのPOST先を”get1a.php”に変更してあります。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=s-jis" />
</head>

<body>
<form action="get1a.php" method="post">
  ソース<br />
  <textarea name="source" cols="100" rows="20"></textarea><br>
  <br />
  <input type="checkbox" name="new" value="yes" checked>新RECBOX<br>
  <input type="submit" value="変換">
</form>
</body>

</html>

●変換、出力ページ(get1a.php)

コードを示します。

<?php

/*
  RECBOX ファイル一覧ピックアップ
  13/10/14 チェックボックスによる新旧切り替え
*/

print("<body>\n");

  $ary = preg_split("/[\n]/", $_POST["source"]);    // 配列に展開

  $outary = array();    // 空の配列を用意

  // 空行を削除
  foreach ($ary as $str){
    if( preg_match("/[^\s]/", $str) ) {   // 空行でないとき
      array_push($outary, $str);      // 配列に蓄積
    }
  }

  $csvAry = array();    // 空の配列を用意

  if( isset($_POST["new"]) ) {      // チェックボックスの状態
    $new = true;
  } else {
    $new = false;
  }

  // 蓄積したテキストより録画日時を頼りに録画情報抽出
  $ix = 0;
  foreach($outary as $str) {
    if( preg_match("/20[0-9]{2}\/[0-9]{2}\/[0-9]{2}/", $str) ) {
      if( $new ) {
        // 新RECBOX
        $title =    trim($outary[$ix-2]); // タイトル
        $dulation = trim($outary[$ix-1]); // 再生時間
        $date =     trim($str);           // 録画日時
        $size =     trim($outary[$ix+1]); // サイズ
      } else {
        // 旧RECBOX
        $title =    trim($outary[$ix-1]); // タイトル
        $dulation = "";                   // 再生時間
        $date =     trim($str);           // 録画日時
        $size =     trim($outary[$ix+1]); // サイズ
      }

      $title = preg_replace("/ +/", " ", $title);          // スペースを半角に変換

//      $csv = $title . "," . $dulation . "," . $date . "," . $size;  // カンマ区切り
      $csv = $title . "\t" . $dulation . "\t" . $date . "\t" . $size; // tab区切り
      array_push($csvAry, $csv);
    }
    $ix++;
  }

  // タブリスト
  if($new) {
    print "<p>TAB区切り(エディタ貼り付け用) <新RECBOX></p>\n";
  } else {
    print "<p>TAB区切り(エディタ貼り付け用) <旧RECBOX></p>\n";
  }
  print "<pre>\n";
  foreach($csvAry as $str) {
    print $str."\n";
  }
  print "</pre>\n";

  // テーブル
  if($new) {
    print "<p>表(表計算ソフト貼り付け用) <新RECBOX></p>\n";
  } else {
    print "<p>表(表計算ソフト貼り付け用) <旧RECBOX></p>\n";
  }
  print "<table border='1' cellpadding='2'>\n";
  print "<tr><td>タイトル</td> <td>再生時間</td> <td>日付</td> <td>サイズ</td></tr>\n";
  $ix = 0;
  foreach($outary as $str) {
    if( preg_match("/20[0-9]{2}\/[0-9]{2}\/[0-9]{2}/", $str) ) {
      if( $new ) {
        // 新RECBOX
        $title =    trim($outary[$ix-2]); // タイトル
        $dulation = trim($outary[$ix-1]); // 再生時間
        $date =     trim($str);           // 録画日時
        $size =     trim($outary[$ix+1]); // サイズ
      } else {
        // 旧RECBOX
        $title =    trim($outary[$ix-1]); // タイトル
        $dulation = "";                   // 再生時間
        $date =     trim($str);           // 録画日時
        $size =     trim($outary[$ix+1]); // サイズ
      }

      $title = preg_replace("/ +/", " ", $title);    // スペースを半角に変換

      print "<tr>";
        print "<td>" . $title .    "</td>";
        print "<td>" . $dulation . "</td>";
        print "<td>" . $date .     "</td>";
        print "<td>" . $size .     "</td>";
      print "</tr>\n";

    }
    $ix++;
  }
  print "</table>\n";

print "</body>\n";

?>

23行目でチェックボックスの状態を受け取り、$newに設定しています。

33行目~と79行目~は同じ処理ですが、新、旧でピックアップする相対位置を変更しています。旧REXBOXの再生時間はブランクにしています。

そのほか、57行目~と69行目~では新旧がわかるようにタイトルを$new変数で切り替えています。

コメントは受け付けていません。