- 締切済み
phpでテキストファイルの特定のワードを抽出
タイトルの通りです。 phpを使い、テキストファイルの中に書かれている文字列をhtmlに表示することはできました。 <?php //ファイルを開く //モード[r]の読み込み専用 if (! ($fp = fopen ( "list.txt", "r" ))) { echo "ファイルが開けません。"; } while (! feof ($fp)) { $load = fgets ($fp, 4096); echo $load; } ?> このような感じです。 ですが、テキストファイルの中の特定の文字(例:美しい)を抽出したいのですが、どのようにプログラムを書いて良いかわかりません。 どなたかアドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- t_ohta
- ベストアンサー率38% (5238/13705)
> 現在ファイルの中に3つほど美しいという単語があります。なのでここではpreg_match_allを使っているということであってますか? はい、複数回出現する事を想定しています。 > また、実際に動かしてみました他が、"array"という文字が表示されうまく動かなかったです。 失礼しました echo $matcheItem[1]; ですね。
- t_ohta
- ベストアンサー率38% (5238/13705)
> やりたいことは、テキストファイルの中の"美しい""綺麗"などの複数の単語を特定し抽出したいです。 > その後、その抽出した単語を配列に格納し、echoで引っ張り表示したいと考えています。 抽出してechoするだけなら、こんな感じじゃないでしょうか。 <?php $tx = file_get_contents('list.txt'); preg_match_all('/美しい/m', $tx, $matches); foreach ($matches as $matcheItem) { echo $matcheItem; }
補足
回答ありがとうございます。 さっそく実装してみました。 <?php $tx = file_get_contents('list.txt'); preg_match_all('/美しい/m', $tx, $matches); foreach ($matches as $matcheItem) { echo $matcheItem; } ?> 現在ファイルの中に3つほど美しいという単語があります。なのでここではpreg_match_allを使っているということであってますか? また、実際に動かしてみました他が、"array"という文字が表示されうまく動かなかったです。
- t_ohta
- ベストアンサー率38% (5238/13705)
「美しい」を抽出してどうしたいかにもよります。 出現回数を調べたいのか、他の文字列に置き換えたいのか、その言葉の周囲の言葉を調べたいのか。 どんな事をしたいのでしょうか。
補足
回答ありがとうございます。 phpはほとんど使ったことがないので初心者です。 やりたいことは、テキストファイルの中の"美しい""綺麗"などの複数の単語を特定し抽出したいです。 その後、その抽出した単語を配列に格納し、echoで引っ張り表示したいと考えています。 アドバイスなどありましたらよろしくお願いします。
補足
回答ありがとうございます。 またリンクもありがとうございます。 少しずつですが、自分のやりたいことができてきているような気がします。 また一つ質問なのですが、 preg_match_all('/美しい|php/', $tx, $matches); print_r($matches); のように"美しい"と"php"というキーワードを抽出し配列に格納しました。 ですが、配列を確認してみると Array ( [0] => Array ( [0] => 美しい [1] => 美しい [2] => 美しい [3] => php ) )となっており1番目にArrayが格納されています。 またechoで美しいというキーワードを配列から取り出し表示しようとしました。 echo $matches[1]; このように書きましたが表示されません。どこが間違っているのでしょうか。 質問ばかりで申し訳ありませんが、どこが間違っているだけでも良いので、教えていただけると助かります。