PHPで下記のスクリプトを作成してください。


「common.php」というファイルに
とうきょう => 東京
あいちけん => 愛知
といった感じの連想配列が格納された配列$kenmeiがあります。
つまりキーには日本の都道府県のひらがな名が、
値には漢字名が当てられているということです。

「common.php」があるディレクトリ下に
「ken」というディレクトリにあります。
その中の「あ.php」というファイルに、
上記$kenmeiのキーが「あ」ではじまる県名に関して、
キーと値をvar_dumpしてください。
(つまり「あいちけん」と「愛知」です)

予定としては「あ.php」以外にも五十音全てのファイルを用意するつもりので、
ファイルが増えても管理しやすいよう留意していただければ幸いです。

また、意図したとおりに動くのであれば、どのような形でも結構です。
たとえばファイル名から「あ」という文字を判別するのが難しい場合は
「あ.php」にあらかじめ変数 $kasiramoji='あ' を
用意しておき、それを関数の引数として使用する等の変更は問題ありません。
良いお知恵があれば教えてください。

XP、PHP5という環境でやってます。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2008/09/14 11:34:58
  • 終了:2008/09/14 15:57:53

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/09/14 12:34:08

ポイント35pt

こんな感じでしょうか。

ディレクトリ 'ken' があることが前提です。

また、既存の 'あ.php', 'い,php'‥‥は上書きされます。

mb_internal_encoding('SJIS');	//Shift_JIS以外ではファイル名が化ける
$path = './ken/';

//出力用配列を作成
$kenmei_2 = array();
foreach ($kenmei as $yomi=>$kanji) {
    $index = mb_substr($yomi, 0, 1);
    $kenmei_2[$index][$yomi] = $kanji;
}

//ファイルへ出力
foreach ($kenmei_2 as $index=>$arr) {
    ob_start();
    var_dump($arr);
    $outstr = ob_get_contents();            //出力文字列取得
    ob_end_clean();
    $outfname = $path . $index . '.php';    //出力ファイル名
    file_put_contents($outfname, $outstr);
}

蛇足ながら、ファイル名を日本語にする点が気になりました。

ソース中のコメントにも記したとおり、Windows環境ではシフトJIS以外の文字コードセットを使うとファイル名が化けます。urlencode して

$outfname = $path . urlencode($index) . '.php';

にした方が可用性が高くなると思います。


参考サイト

id:taroemon

早速のご回答ありがとうございます。


$kenmei = array('あいち' => '愛知県','いしかわ' => '石川県');

とあわせて、このスクリプトをcommon.phpで実行したところ、

「ken」ディレクトリに「縺.php」というファイルができ、下記が出力されました。

array(2) {

["あいち"]=>

string(9) "愛知県"

["いしかわ"]=>

string(9) "石川県"

}


「あ.php」に'あいち' =>'愛知県'

「い.php」に'いしかわ' =>'石川県' 

と出力するにはどのように対応したらよいのでしょうか?

おそらく文字化けのところを私が解消できれば

このスクリプトで完璧だと思うのですが、対応がわかりません。


urlencodeを教えていただきありがとうございます。

これは取り入れてみることにします。

2008/09/14 13:52:55
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/09/14 14:12:38

ポイント35pt

#1のコメント:

おそらく文字化けのところを私が解消できれば

まず、PHPスクリプトをシフトJISで作成してください。

それから、PHPのデフォルト文字コードセットがシフトJIS以外になっているようでしたら、#1で示した

mb_internal_encoding('SJIS');

が必須です。


※設定された回答回数の上限になりました。さらにフォローが必要でしたら、コメント欄を開けていただくか、回答回数を増やしてください。


参考サイト

id:taroemon

再度のコメントありがとうございます。

この質問でとても勉強になりました。

さっそく活用させていただきます。

2008/09/14 15:57:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません