• ベストアンサー

PHPでテキストファイルを読み込み変数に代入する

PHP超初心者ですみません。 aaa:111 bbb:222 ccc:333 444444 という内容のテキストファイルをPHPで読み込み aaa(変数名)=111(中身) bbb(変数名)=222(中身) ccc(変数名)=333\n444444(中身改行あり) という風にできないのでしょうか? いろいろ探しましたがわからなかったので よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Rasyuki
  • ベストアンサー率57% (19/33)
回答No.1

まず、そのテキストファイルでは、 aaa:111\n bbb:222\n ccc:333\n 444444 となっています。 テキストを読み込み、改行で区別するのに 「333\n444444」だけ改行を区別しないというのは面倒だと思います。 なので、444444の書き方が「xxx:xxx」になっていない場合のみ前の変数にくっつけるようにしなくてはいけません。 <? $text = file("test.txt"); foreach($text as $value){ if(preg_match('/^[0-9A-Za-z]+:[0-9A-Za-z]+(\r\n|\r|\n)$/', $value)){ list($key,$var) = explode(":", $value); $$key = $var; }else{ $$key .= $value; } } echo $aaa; echo $bbb; echo $ccc; ?> こんな感じに・・・。 具体的に何がしたいのかわからないのですが、やり方を変えることをお勧めします。

50kino51
質問者

お礼

ありがとうございます。 そんな感じです。 具体的に書いていただきありがとうございます。

その他の回答 (2)

  • utano_m
  • ベストアンサー率45% (14/31)
回答No.3

テキストファイルのフォーマットは固定なのでしょうか? もし固定でなければ、私が良く使うパターンですが [data.php等の名前で保存] <?php  $aaa="111";  $bbb="222";  $ccc="333\n4444"; ?> としてファイルを作り 必要なスクリプト内で require_once("data.php"); として読み込めばそのまま変数として使用できます。

50kino51
質問者

お礼

回答ありがとうございます。 返事が遅くなりまして申し訳ございません。 残念ながら固定のテキストなのです。 他の方法を考えてみたいと思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

あまり効率的ではないかもしれませんがこんな感じでどうでしょう? <?PHP $handle = fopen("test.csv", "r"); while (($row = fgetcsv($handle, 1000, ":")) !== FALSE) { $data[]=$row; } fclose($handle); foreach($data as $array){ if(count($array)==2){ $var=$array[0]; $vars[$var]=$array[1]; }else{ $vars[$var]=$vars[$var]."\n".$array[0]; } } extract($vars); ?> //test.csv aaa:111 bbb:222 ccc:333 444444 55555 ddd:666 777 888 eee: 999 ちなみにこのようなデータ管理の仕方は致命的なバグを起こしかねないので 運用方法を考えなおしたほうがいいと思いますけどね・・・

50kino51
質問者

お礼

ありがとうございます。 できなくはないが致命的なバグをおこすかも・・・とのご指摘ですので 考えなおしてみます。

関連するQ&A