質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2551閲覧

PHP str_containsの検索条件を複数にしたい

ra-men_love

総合スコア6

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/04/29 03:58

実現したいこと

現在、ターミナル上で実行できる計算アプリを作成しているのですが、ユーザー側が入力した「+,-,,/」の判別で躓いています。
str_containsを使って、文字の判別を行い、上記の「+,-,
,/」以外が入力された場合、エラーで返して、繰り返しユーザー側に入力を求めるプログラムを作りたいです。
「+」のみ等、単体の判別は出来たのですが、上記の4つを同時に判別するプログラムが完成できません。
もしよろしければご教示頂けると幸いです。

該当のソースコード

PHP

1echo "+,-,*,/のいずれかを入力してください\n"; 2$i = trim(fgets(STDIN)); 3 4while(!str_contains($i,'+')){ 5 echo "エラーです\n"; 6 $i = trim(fgets(STDIN)); 7}

試したこと

①配列を用いる

$word_list = array('+','-','*','/'); foreach($word_list as $words){ while(!str_contains($i,$words)){ echo "エラーです\n"; $i = trim(fgets(STDIN)); } }

を試してみましたが、エラーで実行されませんでした。

②orを用いる

while(!str_contains($i,'+') or !str_contains($i,'-') or !str_contains($i,'*') or !str_contains($i,'/')){ echo "エラーです\n"; $i = trim(fgets(STDIN)); }

こちらもエラーでした。

③$words = '/+|-/';の形を使う
こちらを試してみたのですが、「/」が外側の//と差別化できないとエラーが出てしまいました。
また/を÷に変更しようとしたら、計算自体処理できなくなってしまいました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1文字しか入力しないのであれば、単純比較で問題ないのではないでしょうか?

php

1$word_list = array('+','-','*','/'); 2if(!in_array($i, $word_list, true)) // 後略

投稿2021/04/29 04:10

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/04/29 04:11

なお、「or」で正しく処理できなかった理由ですが、「+-」のような文字列を入力しない限り、「+がない」と「-がない」のどちらかは成立するので、1文字だけ入力させるのであれば絶対にtrueとなってしまいます。
ra-men_love

2021/04/29 04:18

解決しました。 なるほど、知らず知らずのうちにorを使うことでtrueを返していたんですね・・・ ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問