Disculpa, pero esta entrada está disponible sólo en 日本語 y English.
(日本語) 東京都足立区のリフォーム会社比較
2015年 父の日の贈り物
父の日、あなたはなにを贈りましたか?
贈り物に困っていますか?
私の父はフルーツが好きなので、今年もフルーツにしました。 でも、普通のものでは面白くない。 受け取っても、「まぁ、そうなるよね」で終わってしまう。 だからこそここはイイものを選ぼうと思いました。
新宿高野や千疋屋もいいけど、単にお金をかけていいものを選んだのでは味がない。 品質は高いですが、「お金かけすぎじゃないか」って心配させることになるかもしれない。
そこで選んだのは、富良野グルメ工房【とみたメロン】の富良野メロン特大XLサイズです。 メロンはこれまで数多く食べたでしょうが、特大メロンとなるとわけがちがいます。 北海道富良野の豊かな大地で育った特大メロンの贈り物です。

父も大喜びで企画は大成功でした。
php でディレクトリ配下の全ファイルを逐次処理する方法
PHPを使ってディレクトリ配下の全ファイルを再帰的に処理する方法です。 イテレータを使います。
例えば全ファイルの絶対パスを出力するなら次のようにします。
|
1 2 3 4 5 6 7 |
$iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator(realpath('dir_path'))); foreach ($iterator as $fileInfo) { if ($fileInfo->isFile()) { echo $fileInfo->getPathname(), "n"; } } |
イテレーションする対象をファイルだけに絞ったものを作るのもありですね。 次のように yield を使って関数を作ることもできます。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
function allSubdirectoryAndFilesIterator($dirPath) { return new new RecursiveIteratorIterator( new RecursiveDirectoryIterator(realpath($dirPath))); } function allFiles($dirPath) { foreach (allSubDirectoryAndFiles('directory_path') as $fileInfo) { if ($fileInfo->isFile()) { yield $fileInfo; } } } |
でもこれは yield を使っているため PHP 5.5 からしか使えません。 FilterIterator を使えば PHP 5.1 から使える関数を作成できます。
|
1 2 3 4 5 6 7 8 9 |
class FileFilterIterator extends FilterIterator { function accept() { $fileInfo = $this->getInnerIterator()->current(); if ($fileInfo !== null || $fileInfo->isFile()) { return true; } return false; } } |
このように FileFilterIterator を作り、 $iterator = new FileFilterIterator($anIterator); のようにすれば、ファイルのみの Iterator が作れます。
「Iterator なんて 言語の機能に依存しすぎだから readdir つかって自分でイテレータ作るべきだ」というご意見もあります。
ctype.h にあるよく使う関数
ctype.h で定義されている、よく使うであろう関数をまとめてみました。
文字チェック
- int isalnum(int character)
引数が文字 (
'A'から'Z','a'から'z'または0から9) なら 非ゼロ、そうでなければゼロを返す。- int isalpha(int character)
引数がアルファベットなら非ゼロ、そうでなければゼロを返す。
- int isdigit(int character)
引数が数字 (
0から9) なら非ゼロ、そうでなければゼロを返す。- int isxdigit(int character)
引数が16進数文字 (
0から9、'A'から'F'または'a'から'f') なら非ゼロ、そうでなければゼロを返す。- int iscntrl(int character)
引数が制御文字 (
0x00から0x1Fまたは0x7F) なら非ゼロ、そうでなければゼロを返す。- int isprint(int character)
引数が印字可能文字 (
0x20から0x7E) なら非ゼロ、そうでなければゼロを返す。- int isgraph(int character)
引数がスペース以外の印字可能文字 (
0x21から0x7E) なら非ゼロ、そうでなければゼロを返す。- int islower(int character)
引数が小文字なら非ゼロ、そうでなければゼロを返す。
- int isupper(int character)
引数が大文字なら非ゼロ、そうでなければゼロを返す。
- int isspace(int character)
引数が空白文字 (スペース、タブ文字、復帰文字、改行文字、垂直タブ文字、改ページ文字) なら非ゼロ、そうでなければゼロを返す。
- int ispunct(int character)
引数が句読点文字 (空白文字と
isalnumが非ゼロとなる文字を除くすべての文字) なら非ゼロ、そうでなければゼロを返す。
文字変換
- int tolower(int character)
characterが大文字なら、それを小文字にして返す。- int toupper(int character)
characterが小文字なら、それを大文字にして返す。