textareaからユーザーにインプットしてもらった文章(英語)を
PHPを使って読み取り、
単語の出現した回数をarrayにいれるプログラムを作ります。
たとえば、
I am a student. I am a XX university student.
という文章をユーザーがインプットしたら、
I:2
am:2
a:2
studemt:2
XX:1
university :1
と値を返します。
Perlでは
読み取った文章(ここでは文字列)を
$storyとすると、
foreach( split(/\s+/,$story) )
{
$m{$_}++;
}
でその後、
連想配列のキーと値を順に表示していけばよいとわかります。
PHPではこれをどう表現すればよいでしょうか?
foreach( explode(" ", $story ) )
{
...
}
というところから悩んでいます。
どなたかアドバイスをいただけないでしょうか。
お願いします。
No.2ベストアンサー
- 回答日時:
#1さんのだと語尾のピリオドとかもひろってますね。
セパレータは必ずしもスペースではないので正規表現で拾う方が
よいかもしれません。
また、単語を拾うとなると大文字、小文字で別単語となるとやや
問題になりそうなので大文字を強制的に小文字にすると合理的です。
それと、以下の例のようにアポストロフィーとかハイフンとか
入った場合、どうしたいのか仕様をはっきりしておかないと
後々意に反する結果となる可能性があります。
<?php
$story = "I am a student. I am a XX university student. I'm a second-year student!! ";
preg_match_all("/([a-zA-Z]+)/",$story,$match);
foreach($match[1] as $val){
$count[strtolower($val)]++;
}
foreach($count as $key=>$val){
print "$key:$val<br>\n";
}
?>
preg_match_all("/([a-zA-Z]+)/",$story,$match);
の部分は全く思いつかなかったです。自分にとっては
目からうろこ でした。[ .,!?]の正規表現を用いて、split
することばかり考えてました。
ただ[a-zA-Z]+ だと don'tなどの短縮形が拾えなくなるので
[a-zA-Z']+で使わせていただいてます。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP PHP MySql ページング 2 2022/09/20 06:38
- その他(学校・勉強) この英語の文は適切でしょうか…?? 1 2023/05/11 20:14
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- 英語 瞬時に英語を組み立てたり理解するにはどうしたらいいでしょうか 3 2022/04/23 13:34
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つの連想配列を交互に代入し...
-
foreachで上限回数指定方法また...
-
foreachの間にテーブルの<TR>を...
-
PHPでテキストファイルを読み込...
-
配列を回すとき、最後の要素だ...
-
file_existsでファイル名の部分...
-
Resource id #3 と表示されま...
-
エラーの原因について
-
行数が30万件ほどあるCSVから、...
-
配列をループでたくさん宣言し...
-
配列の何番目かを出力したい
-
String だと「 ByRef引数の型が...
-
プルダウンメニューにDBの内容...
-
スカラーのベクトル微分
-
php で1から100までの素数の表...
-
PHPのmin関数、「1」以上の数値...
-
プルダウンメニューでCSVデータ...
-
チェックボックスが複数選択で...
-
pythonのnumpyでの繰り返しでの...
-
C言語 最大値と最小値を求めて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
VB.NET で 二次元のハッシュは...
-
PHP、{}記号の意味
-
マッチング処理(1:N)
-
sqlのデーターを『あ行』『か行...
-
3つの連想配列を交互に代入し...
-
smartyのforeachの使い方
-
Smartyでインクリメント
-
Excel VBAでフィルター後の対象...
-
連想配列でキーを利用して一部...
-
ラジオボタンをランダムに表示...
-
ftokが動かない?
-
配列からプルダウン用のHTMLを生成
-
リストボックス複数選択抽出方法
-
関数の引数に配列を初期化なしで。
-
foreachの間にテーブルの<TR>を...
-
smartyでtplファイルでの2次元配列
-
PHPで変数名にハイフンを使うに...
-
PHPでJSONを扱うときに配列の参...
-
PHPで連想配列のプルダウンメニ...
おすすめ情報