• ベストアンサー

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

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

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • 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

  • PHPで変数から1行目だけを取得したい

    変数に格納されたデータの1行目のaaaだけを取り出す方法を教えてください。 ※データはWEBサイトのURLリストで常に変動します。 複数行のデータ(\n区切り) 例) aaa   bbb   ccc 又は1行の半角カンマや半角スペースなどの文字で区切られたデータ 例) aaa, bbb,ccc,    aaa bbb ccc 上記のどちらかの形式で変数$dataに格納が可能です。 この$dataに格納されたaaaだけを取得するにはどうしたらいいのでしょうか? PHP初心者のためプログラムソースを書いていただけると助かります。

    • ベストアンサー
    • PHP
  • CSVに外部テキストファイルを列として追加する方法

    こんにちは。 CSVファイル(base.csv)の先頭列に、別のテキストファイル(add.txt)の中身を新規の列として挿入したいと考えているのですが、よい方法がわかりません。。。 どうのような方法を使えば対応することができるでしょうか? どうぞよろしくお願いいたします。 ■CSVファイル(master.csv) title,developer_name,seller_name,primary_genre_name,application_url AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE ■テキストファイル(add.txt) id 000 111 222 333 ↓ ■目標としたファイル(master.csv) id,title,developer_name,seller_name,primary_genre_name,application_url 000,AAA,BBB,CCC,DDD,EEE 111,AAA,BBB,CCC,DDD,EEE 222,AAA,BBB,CCC,DDD,EEE 333,AAA,BBB,CCC,DDD,EEE

  • 複数のテキストファイルを1つにまとめる

    同一フォルダ内にある複数のテキストファイルの内容を1つにまとめる方法を探しております。 例えば、 a.txt, b.txt, c.txt が同一フォルダにあり、 それぞれの内容が AAA BBB CCC である時に、これらをまとめて matome.txtとして、その内容が AAA BBB CCC となるようなプログラムを書きたいのですが、どの様な方法が考えられますでしょうか。 上の例では3つのテキストファイルですが、実際に処理したいファイルは数百個になる為、一つ一つファイル名を入力する作業が大変で困っております。 同一フォルダ内のファイルをファイル名順に一度に読み込み、まとめる方法がありましたらお教え下さい。

  • Accessのデータをテキストファイルで出力する方法を教えてください。

    Accessのデータをテキストファイルで出力する方法を教えてください。 クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。 DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt" フィールドごとに改行して出力する方法はないでしょうか? <クエリ結果> フィールド1  フィールド2  フィールド3 aaa      bbb      ccc <出力テキストファイル> aaa bbb ccc

  • PHP include_once

    include_onceで読み込んだファイルが そのままテキストとして出力されてしまいます。 以下のような感じです。 インクルードするファイル fail.inc test_val = array("aaa" => "aaa111", "bbb" => "bbb222", "ccc" => "ccc333"); ソース本体 src.php <?php include_once('./fail.inc'); 以下処理 exit(); ?> これをそのまま実行すると以下のように出力されます。 test_val = array("aaa" => "aaa111", "bbb" => "bbb222", "ccc" => "ccc333"); includeせずにそのまま走らせると正常に動きます。 httpd.confのaddtypeにincという拡張子は追加していませんが 他の同様のソースでは問題なく読み込めます。 require_onceとかも試しましたが同じようにfail.incの中身がそのままテキストとして 出力されてしまいます。 どうしたら正しく読み込めますでしょうか。 ご回答よろしくお願いしますm(_)m

    • ベストアンサー
    • PHP
  • スクリプト外部ファイルを変数で指定する方法

    スクリプト外部ファイル(例えば、bbb.js)をhtml内へ読込むには、 <script language="JavaScript" scr="bbb.js"></script> と書く事を知りました。 ファイル名を変数(aaa="bbb.js")に入れて、変数aaaで読込む方法を教えて下さい。 次のように、変数aaaにファイル名bbb.jsを代入して、読込みたいのですが、動作しません。 <body> <script language="JavaScript"> aaa=location.search; aaa=aaa.substr(1,(aaa.length - 1)); </script> <script language="JavaScript" src=aaa></script>

  • 変数の中身をある文字列を基準として分解したいです。

    変数の中身をある文字列を基準として分解したいです。 phpで変数の中身をある文字列を基準として分解したいです。 例として $value = "aaa,bbb,ccc,ddd,eee,"; $valeの中身を","を基準として取り出したいのですが可能でしょうか? 1件目:aaa 2件目:bbb 3件目:ccc 4件目:ddd 5件目:eee のような感じで画面に表示したいです。 ご教示、よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイル(A)を読み込んで文字列を変数に代入、変数で別ファイル(B)を検索・・・

    お世話になっております。 まず、仕様から書かせて頂きたいと思います。 【ファイルA】 商品名 数量 ------------- AAA, 3 BBB, 5 CCC, 6 AAA,5 . . . 【ファイルB】 AAA,11111 BBB,12345 CCC,99999 . . . 【ファイルC】 商品コード 数量 ------------------ 11111 8 12345 5 99999 6 (1)ファイルAを読込み、アルファベット文字列を変数に代入 (2)変数でファイルBを検索 (ファイルAの最後まで検索) (3)検索してみつかったら 数字文字列(商品コードとします)に変換 (4)商品コードと、数量の合計をファイルCに出力 fgets、strcmpなどを使って試してみたのですが、 うまく行かず、教えていただけますでしょうか?

  • bashなどのシェル変数の値に改行を含める事は可能でしょうか?

    タイトルの通りですが、通常のシェル変数の値として  [prompt]$ aaa="bbb<改行>ccc" のようなセットを行い、  [prompt]$ echo $aaa  bbb  ccc  [prompt]$ のような結果を得たいのですが、可能でしょうか。

  • PHPの文字列の中に<>を入れると、その中が消える

    PHP初心者です。 例えば、下記のように変数に文字を入れたいです。 $text = "aaa<bbb>"; そうすると、なぜか、<>の中身が消えてしまうのですが、 このような場合、どうしたら良いでしょうか? echo $text; とすると、 aaa し表示されません。 試しに、 $text = "aaa<bbb>ccc"; とすると、aaaccc と表示されます。 ちなみに、mail()関数の中のheader要素を代入する際にこの問題にぶちあたっています。 smartyを使っています。※初期設定のみで何もしていません。 分る方がいましたら、ご助言いただけるとうれしいです。

専門家に質問してみよう