ディレクトリを探索してリンク一覧表示
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
Movable TypeなどCMS、ブログシステムを使っていると、記事の更新に集中できますね。
でも、中にはCMSを使っていない場合、手動でやんなきゃいけない作業が結構めんどうくさかったりします。
たとえば、コンテンツのリンク一覧からメニュー表示部分を作るような場合。
スポンサーリンク
今日、あるディレクトリのリンク一覧を作ろうとして、面倒くさかったので、ディレクトリからファイルを拾ってリンク一覧メニューを作るようにしてみました。
勉強中のAPIプログラム。
このディレクトリ構造は、”http://www.example.com/labo/●●/index.php”、となっていてlaboディレクトリの中に、さらにディレクトリが入っている構造です。
PHPで、laboディレクトリ直下の「●●/index.php」を探索して、「index.php」が存在するディレクトリのみリンクを表示するスクリプトです。
探索したファイルからは、「<title>hogehoge</title>」のhogehoge部分も抜き取って、リンク表示用の文字にする。
<?php $dir = dir('.'); while (($entry = $dir->read()) !== FALSE) { if ($entry == "." || $entry == "..") { continue; } // index.phpファイルを取得 $file = @file_get_contents($entry . "/index.php"); if (!$file) { continue; } // titleを取得 $match = preg_match('/<title>(.*?)<\/title>/i', $file, $matches); // リンク表示 echo '<div class="style6"><a href="' . htmlentities($entry, ENT_QUOTES, "UTF-8") . '/">' . htmlentities($matches[1], ENT_QUOTES, "UTF-8") . "</a></div>"; } ?>
短いソースですが、ディレクトリ(●●/index.php)をいくつ作っても、メニューを自動表示してくれるので、これで楽になりました。
if ($entry == "." || $entry == "..") { continue; }
で、自分自身のディレクトリと親ディレクトリは飛ばす。
file_get_contents に、@で制御するのは、あんま良くない使い方だと、どっかで読んだような気がする・・・が、使っちゃいます。
リンク表示部分は、念のためにhtmlentitiesでエスケープ。
ディレクトリやファイルが入り混じってたり、ディープな階層まで探索したい場合でも、応用利かせれば、なんとかなると思います。
再帰とか使う場合は、無限ループに注意ですね。
スポンサーリンク
>> 次の記事 : 直接ファイルが実行されたときだけ起動するスクリプト
<< 前の記事 : PHPとRubyのコードの書き方を比較
- - 関連記事 -
- strpos() や strcmp() など間違えやすいif文での判定
- htmlentities() と htmlspecialchars() の違い
- PHPの内部エンコードと出力文字コード、スクリプト文字コード
- PHPのデバッグ・xdebugをxamppで有効にする
- CakePHPの日本語対応、国際化
- コマンドラインでPHPが起動できない
- 直接ファイルが実行されたときだけ起動するスクリプト
- PHPとRubyのコードの書き方を比較
- コメントアウトの使い分けと、/*** ~ ***/とか// — を単語登録
- PHPでvar_dump()を使ったお手軽デバッグコード
- プログラミング練習問題をPHPで解いてみた
- CakePHPはMVCかつフルスタックのフレームワーク
- PHP5のクラス定義とオブジェクトのおさらい
- フレームワークCakePHPにチャレンジ
- sort・asort・ksort 配列を並べ替える関数
- foreach構文
- PHPの配列
- strcmp関数
- strcasecmp関数
- PHPヒアドキュメント
スポンサーリンク