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