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

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

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

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

Q&A

解決済

5回答

1449閲覧

空白以外の文字列が一文字でもその変数に含まれているかどうかの判定

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

2クリップ

投稿2019/09/03 03:51

編集2019/09/03 05:14

変数に格納された文字列に対して、空白(全角、もしくは半角)以外の文字列が一文字でもその変数に含まれているかどうかを判定したいのですが、どのような方法が考えられますでしょうか?
検索し、調べたのですが、そのような方法はヒットしませんでした...
追記
調べた内容は、文字列を検索する必要があると思った為、キーワードに「文字列」「空白」「検索」や「空白のみ検索」などを入れ、検索し、文字列検索の関数をみつけましたが、それを生かす方法が分からず、ロジックを考えている過程で詰まってしまいました

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

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

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

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

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

m.ts10806

2019/09/03 03:53

(2回目) 調べたものを使うのが悪いとは思わないですが、 それぞれ何を意味しているか理解しようともしなければ、単純な理屈で、苦手なものも一生得意にはなりませんよね。 得意になろう(または使えるようになろう)と思ってないのならそれで良いでしょうけど、「ここで詰まってるのが勿体ない」と思えたならZuishinさんが別途コメントされてるように基礎的な知識を身に付けてください。 これは正規表現に限らず同じです。コピペや写経で「できたつもり」になっている人が一番成長しませんので。
m.ts10806

2019/09/03 03:54

それに、どう調べたか、キーワードや確認した記事が提示されないと調べ方が合っているかすら誰にもわからないので丸投げでしかありません。
m.ts10806

2019/09/03 04:36

>関数については調べましたが、ロジックの部分でつまってしまい、今回の質問に至ったといった経緯でした。 と書かれていますが、質問本文では何一つロジックについて触れられていません。 コピペコードをお求めならそう書いてください。もちろんそれが非推奨なのは承知の上でしょうけど、 そうでないなら”毎回”質問テンプレートを使って全ての項目を埋めたうえで質問を投稿してください。
Y.H.

2019/09/03 04:49

質問者さんが頭で「空白(全角、もしくは半角)以外の文字列が一文字でもその変数に含まれているかどうかを判定」する際の考え方を何パターンか紙にでも書いて、一番論理的な説明ができるものを選んでプログラム(コード)にしてください。
退会済みユーザー

退会済みユーザー

2019/09/03 05:14

> 「文字列」「空白」「検索」や「空白のみ検索」 「PHP 文字列」ではなく「文字列」と検索したのですか? それでは出てこないと思います。 実際には「PHP」を含めているのかもしれませんがその場合はそのように正確に本文に記載して下さい。 > 文字列検索の関数 とは具体的になんですか? そして自分で考えてここまでは書けたというコードはありませんか?
m.ts10806

2019/09/03 05:15 編集

”毎回”質問テンプレートを使って全ての項目を埋めたうえで質問を投稿してください。 「俺はもう18回も質問しているんだから質問テンプレートなんて不要だぜ」と自信がおありなのでしたらそれは誰にも伝わってません。誰がどう見ても、追記した内容を加味しても、質問テンプレートが必要な初心者です(技術だけでなく、コミュニケーション能力、人に伝える能力も) ・・・(まあ一部で複数アカウント所持者疑惑があるので実際は18以上質問投稿している可能性はありますが)
m.ts10806

2019/09/03 05:17

それに回答がついたからって「その回答をヒントにやってみてできなかったからそれを”試したこと”に含めてはいけない」なんてルールはありません。 「〇〇さんの回答をもとにやってみた結果です」と質問に追記してしっかりコミュニケーションをとって問題を詰めていけばいいだけの話。 問題解決なんて試行錯誤の連続。一問一答で済む方が稀です。 解決までの経緯や道筋がきちんと残っていたほうが後から見たときに自分のためにも同じような問題を抱えた人のためにもなるでしょう。それが「ロジック」となるので。
m.ts10806

2019/09/03 09:22

今度から「コピペで動くコードください」って必ず書くようにしてくださいね。 まともな質問にしないまま解決にしたということはそういうことですからね。分かってないみたいだけど
guest

回答5

0

こういう場合どうしたらいいかなとなった時に 行うべき方法 を教えます。

PHPのリファレンスは以上によくまとまっていて、まず、 関数リファレンス一覧のページをブックマークしておきます

https://www.php.net/manual/ja/funcref.php

とくに、「文字列」や「配列」関連のページは今後よく見るページになるでしょう。

今あなたがやりたいことは、「変数に格納された文字列に対して、空白(全角、もしくは半角)以外の文字列が一文字でもその変数に含まれているか」なのですから、「文字列」関連の関数を調べる。

https://www.php.net/manual/ja/book.strings.php

こちらですね。

文字列を操作する関数はこんなにありますが、 全てを覚える必要はありません
一覧の中から使えそうな関数を 毎回探せばいい のです。

これ使えそうだなと思ったら、 詳細のページをみて、使い方を調べながら、コードを書いて試してみる。これを繰り返せばいいのです。

投稿2019/09/03 04:02

編集2019/09/03 04:13
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/09/03 04:22

ご回答ありがとうございます。 関数については調べましたが、ロジックの部分でつまってしまい、今回の質問に至ったといった経緯でした。 例えば文字列を検索をする関数であったりなどはもちろん調べましたが、そこからどのように目的のバリデーション処理を実現するかといった部分でつまってしまったといった感じでした
退会済みユーザー

退会済みユーザー

2019/09/03 04:30 編集

質問文から読み取ることができない個別の事情まで想像して回答などしていませんし、それを回答者に求めるべきではないと思います。 この回答が求めるものでないというのであれば、質問文を根本から見直していただきたいです。
退会済みユーザー

退会済みユーザー

2019/09/03 04:42

よく意味がわかりませんが遠回しに「良いから動くコードを貼ってくれ」と言っているのでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/03 04:47

いえ、とにかく動けば良いからではなく、きちんと自分が理解し、組み込めるコードを提示頂ければ、勉強にもなりますし、応用にもつながるのではないかと思っています。
m.ts10806

2019/09/03 04:48

dyoshikawaさん 私もそう取りました。 結局「ネットで検索して使えそうなものをコピペで済ませたい」だけで自分で理解して使えるようになろうという気はなさそうです(コメント内容からはそうとれます)
退会済みユーザー

退会済みユーザー

2019/09/03 04:48

@dyoshikawa 少し気になったのですが、何故、いっきに複数の私の質問をクリップしたのでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/03 04:49

> いえ、とにかく動けば良いからではなく、きちんと自分が理解し、組み込めるコードを提示頂ければ、勉強にもなりますし、応用にもつながるのではないかと思っています。 結局何を求めているのでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/03 04:50

> 少し気になったのですが、何故、いっきに複数の私の質問をクリップしたのでしょうか? それは私に目を通した質問をクリップするという習慣があるだけですね。
退会済みユーザー

退会済みユーザー

2019/09/03 04:51

「きちんと自分が理解し、組み込めるコードを提示」まず、提示すべきはあなたです。 あなたが現場どんな考え方をしてどう考えて問題にアプローチをしているかを回答者に伝えなければ、あなたの理解度に合わせた回答はできません。実力に見合わない難解なコードでも動けばそれで終わりですか?? 理解できない時あなたは、「ありがとうございました」とだけコメントしてお茶を濁してきているだけではありませんか?
m.ts10806

2019/09/03 04:52

>勉強にもなりますし、応用にもつながるのではないかと思っています。 と思っている人の質問内容ではありません。既に指摘されているように質問前にやることをきちんとやって、 質問するならこんな丸投げの内容ではなくきちんと「自分でやろうとしていることが誰にも伝わる」質問内容にしてください。 既にこれまでに何度も指摘しています。指摘をスルーし続ける人に学習意欲を感じる人はいないでしょう。
退会済みユーザー

退会済みユーザー

2019/09/03 04:53

「検索し、調べたのですが、そのような方法はヒットしませんでした」 検索のキーワードが適切じゃないのでは? どう調べたというの? 回答者から見たら、あなたの調べ方が悪いのかもしれないし、ヒットはしているけど、理解が追いつかないのかも判断できません。
m.ts10806

2019/09/03 04:53

これまでの回答をコピペで動いた終わりにしていることが分かる一幕でした(終了)
退会済みユーザー

退会済みユーザー

2019/09/03 04:53

いえ、提示頂いたコードでも理解できないと意味がないと思っています。 そして、自分のレベルには適さない場合、組み込むことはしないようにしています。
退会済みユーザー

退会済みユーザー

2019/09/03 04:54

ただ、きちんと理解できた場合は、参考にさせて貰い、組み込んでいます。
退会済みユーザー

退会済みユーザー

2019/09/03 04:56

修正依頼に対して応じないのは、今回の質問は解決しなくて良いということですね。
退会済みユーザー

退会済みユーザー

2019/09/03 04:56

> どう調べたというの? この質問に答えた方が良いですし、次回以降もそうすべきでしょう。 回答者は知り合いではないので、質問者がどこまで理解しどこで詰まっているかという情報を本文以外から得ることはできません。
m.ts10806

2019/09/03 04:58 編集

じゃあこれまでもらった回答は自分で取り込めるくらい理解できてるから解決済みにしてるんですよね? ざっと過去質問見た感じ、それらを理解できている人の質問には誰も思いませんよ。 質問の仕方から考え直してください。 https://teratail.com/help/question-tips
BluOxy

2019/09/03 04:59

組み込めるコードを人からもらっても、構成されている要素が分からなければ学習にはなりません。 ロジックをご自身で考えた訳でもないので0から1を生み出す経験にはなりません。 それよりも、ロジックを考える能力を伸ばすよう訓練した方が良いと思います。 今回でいうと下記のようなステップです。 ①Kosuke_Shibuyaさんが仰るように既存の関数を見つけて振る舞いを試す ②機能を実現させるためにどの関数を組み合わせる必要があるかロジックを考える それが出来なければ学習意欲は無しと皆見ると思います。
退会済みユーザー

退会済みユーザー

2019/09/03 05:01

確かに、質問内容に関しては足りない部分はあったと思っています
退会済みユーザー

退会済みユーザー

2019/09/03 05:03

そう思うのであれば、質問文を修正してください。
m.ts10806

2019/09/03 05:04

うだうだ言ったり反省の弁や謝罪を打ってる暇があったらきちんと本文なおしてもらいたいというのがこちら側の総意です。謝ったところでプログラムは動いてくれないので。
退会済みユーザー

退会済みユーザー

2019/09/03 05:05

なぜ頑なに追記しないんだろう…
退会済みユーザー

退会済みユーザー

2019/09/03 05:05

関数の振る舞いに関しては、レファレンスなどで、調べましたが、それを実装するとなると難しい部分はあると思います。実際にプログラミングの業務をしている訳ではないので、業務をしている人に比べたら経験値が違ってくると思います
退会済みユーザー

退会済みユーザー

2019/09/03 05:07 編集

もうしらん 勝手にしてくれ
m.ts10806

2019/09/03 05:11

反省したところで、言い訳したところでプログラムは動いてくれないので。 初心者だからっていい感じに作用してくれる仕組みはプログラムにはないので。 2019/09/03 14:05に投稿されたその108字を打つ労力を全て質問充実にあててもらった方が前に進むんですけど、そのクドクドとした言い訳を聞かせて我々にどうしろと。
退会済みユーザー

退会済みユーザー

2019/09/03 05:17

追記しましたよ。 言い訳ではありません。mtsさんも客観的事実を受け止めて下さい。
退会済みユーザー

退会済みユーザー

2019/09/03 05:19

> mtsさんも客観的事実を受け止めて下さい。 今更何を言っているのか。
kyoya0819

2019/09/03 05:22 編集

ここは、調べた・挑戦してわからなかった人がきちんとした書式で質問する場所です。ただコードが欲しいだけならYAH00知恵袋にでも質問されてはいかがでしょうか? 少なくともそう受け取られなかったと言うことは質問者さんの非です。 追記されるのはいいですが内容ペラペラです。 何をどうやって調べたかどこまでの回答を望むのかをしっかり書いてください。まぁ、ものによってはお望み通りの回答が来ないのがteratailです。しかし、それも回答者さんの非ですので悪しからず。 あくまでも、苦労した方がヒントをもらう場であり苦労したいない人が作品をもらう場ではありません。
退会済みユーザー

退会済みユーザー

2019/09/03 05:21

確かにもっと早く伝えるべきだった...
退会済みユーザー

退会済みユーザー

2019/09/03 05:21

私からは受け止めているようにしか見えませんでしたが…
退会済みユーザー

退会済みユーザー

2019/09/03 05:25

@asuchi0819 きちんとした質問でも回答がつかないこともあります。 ではその場合、質問者はどのように気持ちに折り合いをつければ良いのでしょうか? 必ず回答がつくという保証はどこにもないのですよ?
m.ts10806

2019/09/03 05:25

主張したいのであれば、初心者アイコンつけてから言ってくれますか? 内容からして初心者であることは誰しもが感じることです。 つけたところで気休め程度にしかなりませんが、付けないよりマシでしょう。 あなたがどこの誰かどういうレベルのなのかはそもそもそこまで大事ではなく、 そこに「問題解決が可能な内容が記されているかどうか」が最も重要視されます。 「初心者だから指摘を無視していい」「初心者だから丸投げでいい」なんてサイトのガイドラインが良しとしていません(当然、それを利用する回答者は良しとしていません) それに問題は頑なに応じない態度です。これは初心者云々は関係ありませんね。 ただ、プログラムが書いた通りにしか動かないのは客観的でもない紛れもない事実です。 初心者は成長して変わることはあっても、プログラムが書いた通りにしか動かない事実は変わりません。
退会済みユーザー

退会済みユーザー

2019/09/03 05:27

@ss_111 > きちんとした質問でも回答がつかないこともあります。 > ではその場合、質問者はどのように気持ちに折り合いをつければ良いのでしょうか? あなたの質問で、「きちんとした質問」は皆無です。 質問に具体性がありません。 試した内容が具体的でありません。
m.ts10806

2019/09/03 05:27

>きちんとした質問でも ごめんなさい。ss_111さんの質問で「きちんとした質問」を見たことがありません。 1番目の質問ですら質問テンプレート使ってません。 https://teratail.com/questions/205199 それこそ客観的な評価を受け入れては?
退会済みユーザー

退会済みユーザー

2019/09/03 05:29

言いたいことが伝わってませんね... つまり、そういう場合の質問者の気持ちも考えるべきではないのかなといっているのです。
kyoya0819

2019/09/03 05:29

> きちんとした質問でも回答がつかないこともあります。 > ではその場合、質問者はどのように気持ちに折り合いをつければ良いのでしょうか? > 必ず回答がつくという保証はどこにもないのですよ? 以下、言葉悪いですが怒ってませんので悪しからず。 しらねぇよ。まともな質問してから言え。
m.ts10806

2019/09/03 05:30 編集

しらねぇよ。まともな質問してから言え。 気持ちを察してくれるならプログラミングは苦労しない。
kyoya0819

2019/09/03 05:30

もしも、質問者はお客様精神を望むならプロに有料で頼んでください。
退会済みユーザー

退会済みユーザー

2019/09/03 05:33 編集

人の気持ちも理解できない人の要望に応えようと思いますか? あなたたちは、回答者の立場だけでなく、質問者の立場にもたってみてください
kyoya0819

2019/09/03 05:33

てか、そこまで心配ならここじゃなくプロに頼むことを真剣に考えることをお勧めします。
退会済みユーザー

退会済みユーザー

2019/09/03 05:33

そこでお互いに折り合いをつければ良いのではないでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/03 05:33

> そういう場合の質問者の気持ちも考えるべきではないのかな そんな義理ないですよ。 所詮質問者がどんな問題に取り組んでいようと、回答者は報酬をもらっているわけでもありませんし、質問者の問題が解決しなくても知ったことじゃない。 聞いたことにすぐに反応せず、必要な情報も出さずに言い訳を連ねる質問者にそれでも答えなきゃいけない理由なんてないはずです。
退会済みユーザー

退会済みユーザー

2019/09/03 05:36 編集

言い訳なんてしてないですが... 事実追記しましたよ。
BluOxy

2019/09/03 05:37 編集

>質問者はどのように気持ちに折り合いをつければ良いのでしょうか 「回答つかなかったな」「質問の聞き方が悪かったかな」(余程難しい質問なら「誰も知らないんじゃしょうがないかな」)じゃないんでしょうか。 そして、「しょうがないから自分で考えよう」じゃないでしょうか。 私は質問するとき基本そんな感じです。それが当たり前ではないのでしょうか。
m.ts10806

2019/09/03 05:38

同じ指摘をしてこじれるのはあなた方くらいなのでご心配なく。 みなさんちゃんと問題を解決したくて質問しているので同じ依頼の仕方でほとんど応じてくださいます。 説明書、ガイドライン・ここなら「質問するときのヒント」「推奨していない質問」くらいはちゃんと読んでそれにそった質問が書けているかくらいは確認しようぜ! なぁにダイジョブさ!サイト利用初心者でも技術的に未熟でも分かりやすいように、「どうやったら的確な回答がもらいやすいか」 きちんと書いてあるからよ!まずは読んでみなよ!そして自分の質問が「回答を得やすい内容になってるか」を「投稿前」に確認してみな! 途中で投稿してもダイジョブさ!質問は編集できるし、「初心者アイコン」はつけられるし、「マークダウン」というのを使いこなせるようになると質問の表現力も上がるぜ! それでも不安なら「質問テンプレート」ってのがあってこの項目を埋めていくだけで充実したように見せられる質問内容になるんだよ!中には整理しているうちに自分で解決することもあるって代物さ! さぁレッツトライ!
kyoya0819

2019/09/03 05:39 編集

ただ調べた内容についてちょっと詳しく書いただけ どんなことを試したか回答者が回答しやすいようのものを書いて初めて追記と呼べるのでは?
退会済みユーザー

退会済みユーザー

2019/09/03 05:40

@BluOxy 確かにそうですね。ただ、上から目線で偉そうな物言いをする回答者の要望には応えようとはだれも思わないと思いますよ。
BluOxy

2019/09/03 05:42

>ss_111 さん 偉そうな物言いをする質問者の質問には応えようとはだれも思わないと思いますよ。煽り抜きです。 人に物事を考えさせるのって偉そうな人しかしませんよ。
退会済みユーザー

退会済みユーザー

2019/09/03 05:43

回答する人が上で質問する人が下であるのは当然のことではありませんか? 決して人間の価値の話ではありませんし、人権上の問題でもありません。 自分で解決できない問題について赤の他人に助けを求めるのであれば、質問者は下でしょう。 いや、対等だというのであれば、報酬を支払うべき。仕事と報酬のバランスが一致した時、対等だと思います。
退会済みユーザー

退会済みユーザー

2019/09/03 05:45

誰も偉そうに要望なんかしてませんが。 情報不足で回答できないので追記してくれたら可能になると言っているだけです。 解決したくないのなら追記しなくて良いと思います。
m.ts10806

2019/09/03 05:47 編集

そりゃ「こいつは上から目線で言ってくる人だ」って思い込んでたらそうとしか取れませんよね。 既に多くの回答者があなたのことを見限って触れないようにしているのも感じませんかね。 だからって「そんな中でも構ってあげてる俺を感謝しろ、崇拝しろ」なんて微塵も思ってませんし、 問題解決することにしか興味ないので、あくまで淡々と問題解決に必要な情報を追記してほしくてコメントしてるだけなので。
BluOxy

2019/09/03 05:46 編集

少し熱くなりました。すみません。 人に質問する以上は相手に負担をかけている訳ですから、きちんと何を考えて何をしたのか全て書くべきです。その負担のかけ方が無礼に感じられれば(つまり質問をきちんと書かなければ)、偉そうな物言いをされても仕方がないと思います。
退会済みユーザー

退会済みユーザー

2019/09/03 05:46

>人に物事を考えさせるのって偉そうな人しかしませんよ。 誰だって最初は初心者であり、だれかに教えをこう存在であると思います。
BluOxy

2019/09/03 06:21 編集

だれかに教えをこう存在である以上、最初から試したことを限界まで書くべきでは。 限界まで試さないで「何も試してないけどわかりませーん」「回答者から偉そうな物言いをされるので相手の要望は応えませーん」では偉そうだなとしか見えません。
退会済みユーザー

退会済みユーザー

2019/09/03 05:50

うーん、プログラミングを学びたいのではなく目の前の口論に勝つことが目的になってるようなのでどうしようもありませんね。
kyoya0819

2019/09/03 05:50

教えを乞うんだったら「教えてください」回答者が答えられないので「ここ教えて」追記して回答者が回答、自分のものにして後学に生かす。 これが正当な手順では? まぁ、追記依頼が必要ないくらいの質問が我々からしたら一番ありがたいのですが
m.ts10806

2019/09/03 05:50

このコメントに参加している回答者の言いたいことはひとつ。 「しらねぇよ。まともな質問してから言え。」 まともな質問の仕方のヒントは2019/09/03 14:38の私のコメントで 非常にフランクに書きましたのでそちらをどうぞ。
m.ts10806

2019/09/03 05:51

ちなみにこのコメントを見ている人の多くは あなたが 「しらねぇよ、さっさとコードよこしやがれ」 と言っているように捉えます。あしからず。
kyoya0819

2019/09/03 05:53 編集

自分も同様で、あなた様が目的の回答が得られず目の前の口論に夢中ならこう言いたい。 「しらねぇよ。まともな質問してから言え。」そして「しらねぇよ。まともな回答してから言え。」 そんなに回答者が気に食わないなら回答してみては?
退会済みユーザー

退会済みユーザー

2019/09/03 05:54

> 誰だって最初は初心者であり、だれかに教えをこう存在であると思います。 悪いが、こんな初歩的な質問したことないわ。
BluOxy

2019/09/03 05:54

下記が原因で指摘が飛んでいる訳ですから、素直に対応すべきです。 ・質問内容から学習意欲を感じられない ・相手から指摘が来るはずなのですぐに対応しない 上から目線(に見えているだけですが)が嫌なら冷たいようですがご自身で解決するしかありません。
m.ts10806

2019/09/03 05:55

そういえば誰か忘れましたけど、「自分も初心者だけどちょっとでも自分と同じような初心者の助けになれば。そして自分の成長のためになれば」というスタンスで回答している人を見たことがあります。質問も投稿してました。 そういう人の質問は伝わりやすく解決にもすぐつながるので、成長早いですよね。
退会済みユーザー

退会済みユーザー

2019/09/03 05:56

@asuchi0819 確かに、その手順でいけば良いですが、回答者の要望に応え追記したは良いが、回答者が途中で分からなくなり、お茶を濁して消えてしまうこともあります。
退会済みユーザー

退会済みユーザー

2019/09/03 05:57

確かに回答してみるとどういった情報が必要なのか想像できるかもしれませんね。 前提を共有して質問するというのはteratailに限ったスキルではないとは思いますが。
退会済みユーザー

退会済みユーザー

2019/09/03 05:59

そしてそういった回答者は「しらねぇよ!仕様で納得しろ!」などと乱暴な回答で質問者に納得させようとします
退会済みユーザー

退会済みユーザー

2019/09/03 05:59

> 回答者が途中で分からなくなり、お茶を濁して消えてしまうこともあります。 それは「交通事故に遭うかもしれないので家から一歩も出ない」というような馬鹿げた論法ではないですか?
m.ts10806

2019/09/03 06:00

>確かに、その手順でいけば良いですが、回答者の要望に応え追記したは良いが、回答者が途中で分からなくなり、お茶を濁して消えてしまうこともあります。 この質問を含め過去18回の質問見てきましたが、どこにも「要望に応え追記した」質問はありませんでした。回答者が途中で分からなくなってお茶を濁して消えてしまう?どれだろう。 別のアカウントの話ですか?
退会済みユーザー

退会済みユーザー

2019/09/03 06:00

よくわからない仮定を前提にされても議論になりませんね。
BluOxy

2019/09/03 06:01

> お茶を濁して消えてしまうこともあります。 それは残念に思うかもしれませんが義務ではないので仕方ありません。 結局問題を解決するのはss_111さんですから、あなたが解決するしかありません。 回答者が消えることが嫌で質問をきちんと書きたくないのであれば最初から聞かないで自分で解決するのが建設的です。自分で解決したいなら、自分の頭を使うことです。今回で言えばロジックをss_111さんが考えることです。
退会済みユーザー

退会済みユーザー

2019/09/03 06:02

より良い回答が付きやすいように質問文で最善を尽くした方が良いですよというだけの話をしています。
退会済みユーザー

退会済みユーザー

2019/09/03 06:04 編集

m.ts10806

2019/09/03 06:04

>そしてそういった回答者は「しらねぇよ!仕様で納得しろ!」などと乱暴な回答で質問者に納得させようとします なるほど https://teratail.com/questions/209705 この質問のことを言っているのなら「”仕様”としか言いようがないところをドキュメントやコードなどを読んで想像・理解したことを伝えた」で納得してない質問者に非がありますね。 最初から「仕様だからそこで納得しろ」なんて言ってないですし、そもそもどこにも「しらねぇよ!仕様で納得しろ!」なんて書いてないですし、「そこまで納得できないなら開発者に問い合わせて」と言っているだけなのに。
m.ts10806

2019/09/03 06:25 編集

なお、まともな質問の仕方のヒントは2019/09/03 14:38の私のコメントで 非常にフランクに書きましたのでそちらをどうぞ。 これだけ多くの回答者を引っ張りだしておいて「勝手に出てきただけ」というスタンスは許されません。 そもそも、もともと、質問を解決する責任は投稿した質問者のみにあり、どんな嘘回答をしていたとしても回答者の責任は負えません。 その回答・アドバイスを採用する質問者の責任です。 もちろん嘘回答にはそれなりの評価や指摘が入ります。 今回の質問の低評価が6つもついていることであったり、回答でKosuke_Shibuyaさんの回答が筆頭である以上は、質問者がとるべき行動は自明でしょう。
kyoya0819

2019/09/03 07:17

回答者どうだこうだ言う前にまずは追記 依 頼 を実行なさっては? それもできないようならteratail以前、質問者以前の問題です。
guest

0

なるほど、大喜利ですか

PHP

1<?php 2$hoge = 'ここに文字列'; 3$hoge = str_replace(' ','',$hoge); 4$hoge = str_replace(' ','',$hoge); 5$hoge = str_replace(' ','',$hoge); 6if (empty($hoge)) { 7echo 'なかったよ'; 8} else { 9echo 'あったよ'; 10}

PHP

1<?php 2$hoge1 = "ここに文字列"; 3$hoge2 = mb_strlen($hoge1); 4for ($i = 0; $i < $hoge2; $i++) { 5 $hoge3 = mb_substr($hoge1, $i, 1); 6 if (preg_match("/\S/", $hoge3)) { 7 echo "残念"; 8 break; 9 } else { 10 echo "OK"; 11 break; 12 } 13}

どっちにしてもbreakする(文法的にいいのかな?)意味不明なコード。(もうちょい長くしたかった)

このまま納品先に出しても怒られると思うので知りません。

投稿2019/09/03 06:18

編集2019/09/03 11:52
kyoya0819

総合スコア10429

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

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

m.ts10806

2019/09/03 06:48

あまりパターンがないのがお題として難ですね。
kyoya0819

2019/09/03 07:15

そうですね... ループ使いたかったのですがなんかうまくいかなかったんでとりあえず投稿しました。
m.ts10806

2019/09/03 07:16

対象のstringを1文字ずつ切り出してOK(スペース)じゃなかったらbreakとか言うのは思いつきましたけど面倒なので作ってませんw
kyoya0819

2019/09/03 07:17

それいただきます。
m.ts10806

2019/09/03 07:34

※あくまで大喜利回答なのでそのまま使っちゃダメよPHPerによる遊びよという注意書きは必須・・
kyoya0819

2019/09/03 07:57

ちょっと意味不明なコード完成しました。
m.ts10806

2019/09/03 08:00

大喜利に求められるのは要件にそったアウトプットだけなので中身はむしろゴチャッとしてたほうが好感です
kyoya0819

2019/09/03 08:25 編集

低評価多いですね〜
m.ts10806

2019/09/03 08:31

質問が質問だから仕方ないかもしれません。 大喜利回答で低評価つかなかったことがないです。
kyoya0819

2019/09/03 08:42

まぁ誰かしらの助けになるかもしれないのでw
guest

0

ベストアンサー

「空白(全角、もしくは半角)以外の文字があるか」をどう判定するか?
の回答としては厳密には異なる回答だったので、編集しました。
※ 元の回答は下部に残しておきます

空白(全角、もしくは半角)以外の文字が存在するかどうかは、
空白(全角、もしくは半角)を取り除いた文字列が空文字("")であるかどうかで判定します。

  • 空白(全角、もしくは半角)を取り除いた文字列が空文字("")なら、全て空白(全角、もしくは半角)であるということなので、空白(全角、もしくは半角)以外もの字は存在しない。
  • 空白(全角、もしくは半角)を取り除いた文字列が空文字("")以外なら、空白(全角、もしくは半角)以外の文字が残っているので存在する。
foreach(array("ab","a b","ab ","a b"," ","  "," ") as $str){ if (str_replace(array(" "," "),"", $str) == "") { echo "[".$str."]: Not exists non space character." . PHP_EOL; } else { echo "[".$str."]: Exists non space character." . PHP_EOL; } }

以下では、空白(全角、もしくは半角)が存在するかどうかを判定するロジックでした。

空白(全角、もしくは半角)を取り除いた文字列と元の文字列と比較した結果で判定します。
同じなら含まれないし、異なれば含まれます。

PHP

1<?php 2 3foreach(array("ab","a b","ab ","a b"," ","  "," ") as $str){ 4 if (str_replace(array(" "," "),"", $str) == $str) { 5 echo "[".$str."]: Not exists space character." . PHP_EOL; 6 } else { 7 echo "[".$str."]: Exists space character." . PHP_EOL; 8 } 9}

投稿2019/09/03 04:41

編集2019/09/03 07:41
Y.H.

総合スコア7914

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

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

date

2019/09/03 06:21

質問内容はY.H.さんのstr_replaceを使うのがわかりやすいです。 別の変数に空白を削除し格納してifで文字があるか調べるのがわかりやすいかな $str1 = str_replace(array(" "," "),"", $str);
退会済みユーザー

退会済みユーザー

2019/09/03 08:41 編集

ご回答ありがとうございます。 このような単純な方法で、実装することができるのですね... 対象の変数は配列ではなく、文字列を格納した変数を想定していましたが、配列でも使えますね... 勉強になりました。
Y.H.

2019/09/03 09:35

> 対象の変数は配列ではなく 単に7パターンのテストをやりたかったので配列にしてforeachでループしているだけです。 判定自体はif文の行1行のみで、配列ではなく文字列変数を対象に判定しています。
guest

0

文字列 空白 検索 php
で検索したら、2~3ステップ程度でできそうなものが簡単に見つかりました。
どうようにやってみてください。すごく簡単です。
(あなたは何を見つけ、それをどのように使おうとしてロジックを考えて詰まったのですか?

投稿2019/09/03 08:07

sage

総合スコア1216

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

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

0

PHP

1$a=["ab","a b","ab ","a b"," ","  "," "]; 2$pattern="/[^\x20\xE3\x80\x80]+/u"; 3foreach($a as $str){ 4 if(preg_match($pattern,$str)){ 5 print "[".$str."]<br>"; 6 } 7}

投稿2019/09/03 04:18

編集2019/09/03 04:38
yambejp

総合スコア114843

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

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

maisumakun

2019/09/03 04:24

UTF-8的にValidな文字列が来るならこれでも動くかもしれませんが、"\x80"のような文字列も通ってしまいます。素直にu指定子付きの正規表現を書くべきかと思います。
yambejp

2019/09/03 04:39 編集

PHPの正規表現はUTF8以外は正確にマッチさせられないので同じでは? むしろUTF8以外を想定するなら正規表現は使えないでしょう。 修飾子uはつけ忘れてたので修正しておきます
退会済みユーザー

退会済みユーザー

2019/09/03 04:39

ご回答どうもです。 正規表現に関しましては、自分はまだ勉強不足ですし、どうするか悩んでいるといった感じです... 自分が理解できていない状態で、使うのは避けた方が良いかなとの思いもあるのですが、バリデーションチェックとして解決しなければいけない問題もありますし、悩みどころですね。。
maisumakun

2019/09/03 04:43

u指定子付きであれば、UTF-8の1コードポイントも1文字として認識されますので、/[  ]/u(角括弧の中身は半角スペース+全角スペース)のように書けます。 uなしでコードポイントをバラで書く、あるいは1バイトでない文字を角括弧の中に書くなどすると、(今回の場合は\xe3\x80\x80であって、\xe3と\x80で出来上がるvalidな文字が全角スペース1つしかないから正常動作したのですが)コードポイントの「組み合わせ」すべてが通ってしまうので、思ったところに絞れません。
yambejp

2019/09/03 04:47

maisumakunさん、補足ありがとうございます 逆に想定外のものをヒットさせる場合の具体例をだせますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問