19

変数に数値が含まれているかどうかを確認したいのですが、次のように他のものが含まれているかどうかは気にしない変数があるかどうかを確認したいだけです。

"abc" - false
"!./#()" - false
"!./#()abc" - false
"123" - true
"abc123" - true
"!./#()123" - true
"abc !./#() 123" -true

それがすべての数値であることを知りたいが、1 つだけではないことを知りたい場合は、これを行う簡単な方法があります。ご協力いただきありがとうございます。

4

5 に答える 5

69

strcspn次の関数を使用できます。

if (strcspn($_REQUEST['q'], '0123456789') != strlen($_REQUEST['q']))
  echo "true";
else
  echo "false";

strcspn整数を含まない部分の長さを返します。それを文字列の長さと比較し、それらが異なる場合は、整数があったに違いありません。

このために正規表現エンジンを呼び出す必要はありません。

于 2009-05-23T15:24:15.130 に答える
12
$result = preg_match("/\\d/", $yourString) > 0;
于 2009-05-23T15:19:52.017 に答える
4

これはあなたを助けるはずです:

$numberOfNumbersFound = preg_match("/[0-9]+/", $yourString);

preg_match 関数をもっと活用できるので、そのマニュアルを見てください。

于 2009-05-23T15:25:06.593 に答える
-2

このパターンを使用して、正規表現を使用して文字列をテストできます。

$isNumeric = preg_match("/\S*\d+\S*/", $string) ? true : false;
于 2009-05-23T15:24:32.837 に答える