phpにて、いくつかのキーワードを変数で設定しておき、
文中にそのキーワードがあるかどうか判定し、そのキーワードによって処理を変えていくというプログラムを作成しています。
プログラムは、strposによるキーワード判定と、switchによる処理を組み合わせたものです。
//【キーワードの設定】
//「暑い」
$atui = "暑い";
$atui2 = "あつい";
$atui3 = "あっつい";
$atui4 = "あつーい";
//「寒い」
$samui = "寒い";
$samui2 = "さむい";
$samui3 = "さっむーい";
$samui4 = "さむーい";
//【判定対象の文章】
$word = "外は暑いなあ"
switch (true) {
//【「暑い」の場合の処理】
case (strpos($word, $atui1) !== false) || (strpos($word, $atui2) !== false) || (strpos($word, $atui3) !== false) || (strpos($word, $atui4) !== false) || :
echo "今日は暑いですね";
break;
//【「寒い」の場合の処理】
case (strpos($word, $samui1) !== false) || (strpos($word, $samui2) !== false) || (strpos($word, $samui3) !== false) || (strpos($word, $samui4) !== false) || :
echo "今日は寒いですね";
break;
}
キーワード認識に幅を持たせたいので変数を何個も設定しています。
上記コードのように『暑い』だったら、「あつい」「あっつい」「あつーい」「アツイ」などをそれぞれ個別に変数化し
いずれかが含まれていたら「暑い」の処理を実行するという感じです。
キーワードが少ないうちはいいんですが、多くなってくると
個別に設定している変数が膨大になってきて収集がつかなくなってきている状態です。
条件式も、複数のキーワードを組み合わせた判定を書こうとすると、ものすごい長さになってしまいますし…
$atui = "暑い" or "あつい" or "あっつい" or "あつーい" or "アツイ";
という感じに、うまく一つのキーワードで一つの変数にまとめることはできないでしょうか?
(ちなみに、上記のように書いて条件式に使ってみたのですがうまくいきませんでした…)
なにか良い方法がありましたらご助力頂けると幸いです。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
そういう複雑な条件で処理する場合は、preg_match を使うのが簡単です。
$atui = "/暑い|あつい|あっつい|あつーい|アツイ/";
if (preg_match($atsui, $word)) echo "今日は暑いですね";
詳しくは「正規表現」について勉強してほしいのですが、
例えば、
$atui = "/(暑|[あア][っッ]?[つツ])ー?[いイ]/";
としておけば、これだけで質問者さんが示したものだけでなく
「暑ーい」や「あっツーい」なども検出できるようになります。
こちらの方法でうまく動作させることができました、ありがとうございます!!
この機会に正規表現について、もっと理解を深めていきたいと思います。
No.2
- 回答日時:
配列で、atui[]に調べる文字列を全部入れておいて、始めから終わりまで
チェックする。
do
{ if(atui[x]=="あつい")echo "あつい" break; x++; }
while(xxxx)
みたいにすれば?
または、
do {
switch (atui[x]) case: atui[x]=="あつい" break:
x++;
}while()
適当に書きましたので文法は、PHPユーザ会とかで調べてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- その他(プログラミング・Web制作) Excel の判定式で正しく判定されない場合があります。 2 2022/05/31 14:43
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
- オープンソース ChatGPTをスプレッドシートと連携して自動でリサーチしたいんですがうまく出来ません。。。 1 2023/05/05 15:59
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
コンストラクタについて
-
PHPが処理を途中でやめる。原因...
-
Cronで同じ処理を複数同時に実...
-
Linuxサーバに移行とphpexcel出力
-
データベースのユーザ定義関数...
-
includeしたファイルに変数を持...
-
処理の内容を別ページへ出力したい
-
PHPで文字列の検索
-
携帯電話用Webページの自動更新...
-
フォントの色を変えるには?
-
リンク先を隠す方法はないでし...
-
copy() で属性保存
-
onedrive にexcelファイルをア...
-
PHP session_destroyとsession...
-
「クラス関数」「メンバ関数」...
-
別PHPファイルに変数を渡す
-
VBSの「MsgBox」について
-
3つ以上の論理積は利用可能なの...
-
「@$変数」の「@の意味は?」
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
インスタンス化に伴うメモリ消...
-
PHPが処理を途中でやめる。原因...
-
PHPExcel処理速度が遅い
-
phpの処理中に画面表示ををする...
-
関数の前にアットマークが付く場合
-
Cronで同じ処理を複数同時に実...
-
PHPで偶数と奇数を判断するには
-
3の倍数の和
-
includeしたファイルに変数を持...
-
タイムアウト処理?となる
-
プログラム内で処理中断後も継...
-
入れ子になっているHTMLタグも...
-
条件分岐 if(elseif) switchの...
-
Smartyにて、文字検索
-
アクセスクライアントごとにタ...
-
VBAからPHPを実行(キック)したい
-
【PHP】URLがドメイン名...
-
DBへの書き込みとメール送信を...
-
GETリクエストでURLを渡す時
おすすめ情報