下記のような感じの文字列が複数行あるとします。
[[関東地方]](東京都)(新宿区)(1丁目)
このうち[[ ]]で囲まれてる部分、上記例では「関東地方」を値、
最初の()、上記例では「東京都」をキーとして、
全行を連想配列に格納するプログラムを作成してください。
環境はXP、PHP5です。
よろしくお願いします。
<?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) "関東地方" }
という形でデータが格納されます。
<?php $str = ' [[関東地方]](東京都)(新宿区)(1丁目) [[東北地方]](岩手県)(盛岡市)(2丁目) [[北陸地方]](新潟県)(新潟市)(3丁目) [[東海地方]](愛知県)(名古屋市)(4丁目) [[甲信地方]](長野県)(長野市)(5丁目) ' ; preg_match_all('/\[\[(.+?)\]\]\s*((.+?))/', $str, $mat) ; $list = array_combine($mat[2], $mat[1]) ; print_r($list) ; ?>
ご回答ありがとうございます。
うまくいきました。大変勉強になりました。
ご回答ありがとうございます。
大変参考になりました。また教えてください。