スポンサーリンク

phpでフォルダ内のファイルのリストを表示する(1)

(1)wordpressのプラグインの管理画面で、特定のフォルダ内のファイルのリストを表示したい。

$dir = "../wp-content/plugins/TSM_font-changer2/fonts/" ;

// ディレクトリの存在を確認し、ハンドルを取得
if( is_dir( $dir ) && $handle = opendir( $dir ) ) {
  echo "<ul>" ;
    while( ($file = readdir($handle)) !== false ) {
      if( filetype( $path = $dir . $file ) == "file" ) {
      echo "<li>" ;
      echo $file ;
      echo "</li>" ;
      }
    }
  echo "</ul>" ;
}

 

http://php.net/manual/ja/function.glob.php

http://www.ideaxidea.com/archives/2010/04/php_glob.html
PHPのglob()がすっごい便利だった件
April 27th, 2010

pattern  パターン。チルダの展開やパラメータ置換は行いません。

とのことなので、glob()内は、式展開?などはできないのかな。。。

http://www.php-ref.com/b2api/03_is_dir.html
ファイルの種類を確認する( is_dir()、is_file()、is_link() )

(引用ここから)
——————————-
is_dir( ファイル名 )
指定したファイル名が、ディレクトリか確認し、ディレクトリならTRUE、ディレクトリ以外ならFALSEを返す。
——————————-
(引用ここまで)

(2)プルダウンリストで表示

$dir = "../wp-content/plugins/TSM_font-changer2/fonts/";

$files = array();
  if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
      $files[] = $file;
    }
  closedir($dh);
  }

  $sampleSelectBox = "<select name=\"selectBoxName\">\n";
  for ( $i = 0; $i < count( $files ); $i++ ) {
      $sampleSelectBox .= "\t<option value=\"{$array[$i]}\">{$files[$i]}</option>\n";
  }
  $sampleSelectBox .= "</select>\n";
  echo "{$sampleSelectBox}";

wordpressでのフォルダのパスの設定が難しく、仕方なく、admin.phpからの相対パスを指定したらうまくいった。(絶対パス:「home/www/xxxxxxx    」であれば、うまくいくのだが、汎用性がないので採用しなかった。)

上記に、さらに、form action 表示を追加。

$dir = "../wp-content/plugins/TSM_font-changer2/fonts/";
$files = array();
  if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
      $files[] = $file;
    }
  closedir($dh);
  }

echo <<<EOD
<form action="../wp-content/plugins/TSM_font-changer2/select.php" method="post">
EOD;
  $sampleSelectBox = "<select name=\"selectBoxName\">\n";
  for ( $i = 0; $i < count( $files ); $i++ ) {
      $sampleSelectBox .= "\t<option value=\"{$files[$i]}\">{$files[$i]}</option>\n";
  }
  $sampleSelectBox .= "</select>\n";
  echo "{$sampleSelectBox}";
echo <<<EOD
<p><input type="submit" value="決定" /></p></form>
EOD;

 

(3)TSM_font-changer2.php と同じフォルダに、select.php を作成

まずは、セレクトされたファイルを表示するスクリプト
$_POST[selectBoxName]  という形で受け取る。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<p>
あなたは以下のフォントを選択しました。
</p>
</br>
<p>
<?php
  $selected_font2 = $_POST[selectBoxName];
  echo "$selected_font2";
?>
</p>
</body>
</html>

 

(4)font-changer.css (一部) 以降、TSM_font-changer3 と名前変更する

/* Ligature Symbols */
 
@font-face {
    font-family: 'LigatureSymbols';
    src: url('./fonts/selected_font.woff') format('woff'),
         url('./fonts/selected_font.otf') format('opentype');
    font-weight: normal;
    font-style: normal;
}

(5)今後の予定

●選択されたフォントファイル名を、selected_font.otf に上書き保存(または変更)する。

元ファイルは残しつつ。

PHP,wordpress

Posted by twosquirrel