人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの正規表現について次のプログラムを作成してください。
下記のような感じの文字列が複数行あるとします。

[[関東地方]](東京都)(新宿区)(1丁目)

このうち[[ ]]で囲まれてる部分、上記例では「関東地方」を値、
最初の()、上記例では「東京都」をキーとして、
全行を連想配列に格納するプログラムを作成してください。

環境はXP、PHP5です。
よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP XP キー プログラム 作成
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ctrl-v
●35ポイント
<?php
$data = "data.txt";   //文字列データの入ったファイル
$lines = file($data);

foreach($lines as $str){
ereg("\[\[(.*)\]\]",$str,$val);  //[[ ]]の部分を読み込みます
ereg("((.*))((.*))((.*))",$str,$key);  //( )( )( )の部分を読み込みます
$result[$key[1]] = $val[1];/  /$key[1]には「東京都」、$key[2]には「新宿区」、$key[3]には「1丁目」が格納されます
}
?>

配列$resultに

array(2) {
 ["東京都"]=>
 string(12) "関東地方"
 ["神奈川県"]=>
 string(12) "関東地方"
}

という形でデータが格納されます。

http://q.hatena.ne.jp/answer

◎質問者からの返答

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

大変参考になりました。また教えてください。


2 ● GoldenDawn
●35ポイント
<?php
$str = '
[[関東地方]](東京都)(新宿区)(1丁目)
[[東北地方]](岩手県)(盛岡市)(2丁目)
[[北陸地方]](新潟県)(新潟市)(3丁目)
[[東海地方]](愛知県)(名古屋市)(4丁目)
[[甲信地方]](長野県)(長野市)(5丁目)
' ;

preg_match_all('/\[\[(.+?)\]\]\s*((.+?))/', $str, $mat) ;
$list = array_combine($mat[2], $mat[1]) ;

print_r($list) ;
?>

http://q.hatena.ne.jp

◎質問者からの返答

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

うまくいきました。大変勉強になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ