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 に上書き保存(または変更)する。
元ファイルは残しつつ。
ディスカッション
コメント一覧
まだ、コメントがありません