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

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

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

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

Q&A

解決済

2回答

1728閲覧

PHP 数字チェックについて

a0841_1974

総合スコア29

PHP

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

0グッド

0クリップ

投稿2018/01/30 08:43

いつもお世話になっております。

PHPの数字チェックで分からない事があります。
ご存知の方がおられましたら、教えて頂けますでしょうか。

【ご質問】
PHPで数字チェックを作成したいです。
以下のチェックを使用すると
01や001や00のような0から始める数字もtrueとなってしまいます。

01や001や00のような場合は、falseにしたいのですが、
方法はありますでしょうか?
ただし、0や0.00みたいな場合は、trueとしたいです。

// 数値チェック if (preg_match('/^[-]?[0-9]+(.[0-9]+)?$/', $value)) {   // 数値チェックOKの場合   return true; } return false;

以上です。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

$a='001' return strcmp($a,strval(intval($a))) !==0;

とか?

※ 各関数の綴りミスあったらごめんだが

投稿2018/01/30 12:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

ちなみに0で始まる数値は8進数だということはご理解されていますか?
010は10進数でいう8です。
それをふまえて0始まりの数値は除外したいのでしょうか?

sample

上記踏まえて、こんな感じでどうでしょう?

PHP

1 $pattern="/^[-+]?([1-9][0-9]*|0)(.[0-9]+)?$/"; 2 print preg_match($pattern,$str,$m)?"OK":"NG";

※こまごま修正してます

条件:

  • 頭は+か-が付く場合もある
  • 0からは始まらない
  • 1-9から始まってその後は何桁でもOK
  • 0の場合がある
  • 小数点以下が付く場合もある

※ただし、抜けがあるかもしれません

投稿2018/01/30 08:52

編集2018/01/30 09:10
yambejp

総合スコア114572

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

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

a0841_1974

2018/01/30 09:07

ご連絡ありがとうございます。 >ちなみに0で始まる数値は8進数だということはご理解されていますか? たいへん申し訳ございません。 理解はしておりませんでした。 $valueには、10進数の数値が設定されていると仮定して 数値チェックを実施したいのですが、 伝わりますでしょうか。
yambejp

2018/01/30 09:11 編集

追記しておきました チェックが甘いので抜けがあるかもしれません たとえば「10.0」はOKで「10.」はNGでよいですよね?
a0841_1974

2018/01/30 10:40

ご連絡ありがとうございます。 10.0はokで、10.はngです。 ご連絡頂きました正規表現とis_numricで確認してみます。
a0841_1974

2018/01/30 12:47

is_numric()で確認しましたが、001、01は数値として判定されてしまうのでダメでした。 正規表現を確認してみます。
a0841_1974

2018/01/31 09:26

ご連絡頂きました正規表現を確認しましたが、 私が実施したい事が出来ましたので、 ご連絡いたします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問