1

たとえば、次のように言います。

<?php

    // Grab the ID from URL, e.g. example.com/?p=123
    $post_id = $_GET['p'];

?>

変数が数値であり、正の整数であるかどうか$post_id(つまり、浮動小数点数、分数、または負の数ではなく、0 から 9) を確認するにはどうすればよいですか?

編集:文字列を返すため、is_int使用できません。または$_GETを使用する必要があると思いますが、後者の方が適切に思えます。例えば:intval()ctype_digit()

if( ctype_digit( $post_id ) ) { ... }
4

6 に答える 6

5

文字列入力が正の整数であるかどうかを確認するには、常に関数ctype_digitを使用します。これは、正規表現よりもはるかに理解しやすく、高速です。

if (isset($_GET['p']) && ctype_digit($_GET['p']))
{
  // the get input contains a positive number and is safe
}
于 2013-10-12T11:36:27.070 に答える
2

あなたはこのようにすることができます: -

if( is_int( $_GET['id'] ) && $_GET['id'] > 0 ) {

   //your stuff here

}
于 2013-10-12T10:51:33.140 に答える
2

is_int は型検出専用です。また、リクエスト パラメータはデフォルトで文字列です。だからうまくいかない。http://php.net/is_int

タイプに依存しない実用的なソリューション:

if(preg_match('/^\d+$/D',$post_id) && ($post_id>0)){
   print "Positive integer!";
}
于 2013-10-12T11:08:50.527 に答える