• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストからあるキーワードの入った行の抜き出し)

テキストからキーワードの行を抜き出す方法

このQ&Aのポイント
  • PHPを使用して、指定のキーワードが含まれる行を抜き出す方法をお教えします。
  • テキストデータから特定のキーワードの行を抽出し、出力する方法について説明します。
  • データ内の特定のキーワードが含まれる行を取り出し、CSVやテキストで出力する方法について詳しく解説します。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

そのまま書けばいいように思いますが、どのあたりがわからなかったのでしょうか? データに「name」と「ID」は必ずあるという前提でよければ、こんな感じでしょうかね。 <?php $fi = fopen('data.txt', 'r') or die('cannot open'); $fo = fopen('result.txt', 'w') or die('cannot open'); $ct = 0; $out = array(); while (($buf = fgets($fi, 8192)) !== false) { if (strpos($buf, 'name') === 0) { if (count($out) !== 0) { $ct++; fputs($fo, implode(',', $out) . PHP_EOL); } $out = array(); $out[] = trim($buf); } if (strpos($buf, 'ID') === 0) { $out[] = trim($buf); } } if (count($out) !== 0) { $ct++; fputs($fo, implode(',', $out) . PHP_EOL); } fclose($fi); fclose($fo); print '<a href="result.txt">result = ' . $ct . '</a>';

non05410
質問者

お礼

とても細かく分かりやすい解答ありがとうございます。 早速試したところ考えていた通りに処理することが出来ました! 本当にありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • xitoaki
  • ベストアンサー率35% (36/101)
回答No.1

FGetS()関数をループして、1行ずつ読み込んで、 explode()関数でスペースを区切り文字に要素名と値に分けて、 配列にでも入れればいいんじゃないかなぁ。 以下適当。ファイルのオープン・クローズや、 Trim関数とかで余計なスペースを取り除けばできるのでは? $i = 0; $arr = new Array(); while(!FEOF($fp)){ $str = FGetS($fp); if(EReg("-+", $str){ $i++; continue; } $val = Explode(" ",$str); $arr[$i] = Array($val[0] => $val[1]); } PrintR($arr); あまりに適当なので、まともに動かなかったらすまん。

non05410
質問者

お礼

回答頂きありがとうございます。 例文が悪かったのですが、実際のデータが単純なスペース区切りというわけではなかったので今回はもうひと方の回答を参考にさせてもらいました。 ですが、こちらの回答もとても勉強になりましたので、機会があれば参考にさせて頂こうと思います! 本当にありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A