KANTENNA.COM

Solarized

HOME > WEBプログラム覚書 > 指定ディレクトリ内のファイルのタイトルを取得してリンクを作成

指定ディレクトリ内のファイルのタイトルを取得してリンクを作成

ディレクトリ内のファイルを取得する場合、opendir()使って やってましたがglob()という便利なものがあるんですね。

リャマ本こと

初めてのPerl
作者:トム フェニックス | 価格:¥ 3,780

を読んでて知りました。Perlの本だけどPHPの勉強にもなります。

指定ディレクトリのタイトルを取得してリンクを作成

とりあえず多少エントリのある http://www.kantenna.com/pg/2009/01/ 内のphpファイルへのリンクを作ります。

サンプルコード

PHP
  1.  <?php
  2.  // 取得したいファイルがあるディレクトリ
  3.  // DS = DIRECTORY_SEPARATOR
  4.  $target = DS . "pg" . DS . "2009" . DS . "01" . DS;
  5.  
  6.  // タイトル格納用
  7.  $titles = array();
  8.  
  9.  // 作業ディレクトリの移動
  10.  chdir($_SERVER["DOCUMENT_ROOT"] . $target);
  11.  
  12.  // .phpファイルを取得して title の中身を取得
  13.  foreach (glob("*.php") as $filename) {
  14.  
  15.   $handle = fopen($filename, "r");
  16.  
  17.   while (!feof($handle)) {
  18.   $line = fgets($handle);
  19.   if (preg_match("/<title>.*<\/title>/", $line, $match)) {
  20.   $titles[] = array(strip_tags($match[0]), $filename);
  21.   fclose($handle);
  22.   break;
  23.   }
  24.   }
  25.  
  26.  }
  27.  
  28.  // 出力
  29.  echo "<ul>";
  30.  foreach ($titles as $values) {
  31.   printf('<li><a href="%s">%s</a></li>', $target . $values[1], $values[0]);
  32.  }
  33.  
  34.  echo "</ul>";
  35.  
  36.  ?>

実行結果


Warning: chdir() [function.chdir]: No such file or directory (errno 2) in /home/users/1/lolipop.jp-dp07173486/web/kantenna/view/pg/2009/03/post_42.php on line 583

    トラックバック(1)

    2009年5月15日 12:24

    PHP Array関数いろいろWEBプログラム覚書

    PHPには配列を操作する関数がたくさんあるのでちょっとずつ試してみる。続きを読む

    コメント

    コメントする
    Name
    Email Address
    URL
    TIME LINE
    2012
    02.03

    [jQuery]closest()とparents()

    今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

    今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

    2012
    02.01

    [jQuery Mobile]初期化イベントメモ

    jQuery Mobileは読み込まれてから

    mobileinit -> pagebeforecreate -> pagecreate -> pageinit

    の順番でイベントが発生する。

    2012
    02.01

    [WordPress]管理画面のフッタのフィルタとアクション。

    時間も時間なので、あまり使用頻度の高くない微妙なネタを。

    会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

    2012
    01.28

    [WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

    ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

    2012
    01.26

    [jQuery Mobile]ダイアログ

    jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

    2012
    01.25

    [Ubuntu11.10]Ubuntuのインストール後の設定

    インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

    すばらしいですね。

    2012
    01.24
    2012
    01.23

    MinGW+Mintty+Git

    MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。

    2012
    01.21

    [PHP]共有サーバーユーザーのためのPEARインストール方法

    共有サーバーでは自由にPEARのパッケージがインストールできないので、 プロジェクトローカルに設置することになりますが、以前httpベースのものを使ってみたんですけど、 やたら重くて使い物にならなかったので、僕は普通にFTPでアップするようにしてます。

    ってことでプロジェクトローカルへのPEARのインストール方法。