1
// create a string
$string = '+7';

// try to match the beginning of the string
if(preg_match("{-15 to +12}", $string))
    {
    // if it matches we echo this line
    return {strip all the + sign}
    echo 'its a valid gmt time';
    }
else
    {
    echo 'not valid gmt time';
    }

質問:

  1. preg_match の最初の {} を見てください。どうすればそれができますか? 正規表現が初めてで、どこから始めればよいかわかりません

  2. 2 番目の {} で、正規表現を使用して + 記号を取り除くことはできますか?

  3. GMTの範囲は正しいですか?-14 から +12 ( http://www.php.net/manual/en/timezones.others.phpで見たもの)

ありがとう

4

5 に答える 5

1
$string = '+7';
if (in_array($string, range(-15, 12))) {
    echo 'its a valid gmt time';
} else {
    echo 'not valid gmt time';
}
于 2010-07-25T18:37:33.050 に答える
1
function validGMT($input)
{
    $gmt = '/^(?:\+?(?:[0]?[0-9]|[1][0-2])|-(?:[0][0-9]|[1][0-4]))$/';
    if ( preg_match( $gmt, $input ) )
    {
        return true;
    }
    else
    {
        return false;
    }       
}

編集*

php5.2 を使用している場合は注意してください。これを行う

$val='-2';
$options['options']['min_range'] = -14;
$options['options']['max_range'] = 12; 
$var1 = filter_var($val, FILTER_VALIDATE_INT,$options);
var_dump($var1);   
于 2010-07-25T18:04:53.773 に答える
0

私はします:

preg_match("/^([+-]\d+)/", $string, $m);
if(isset($m[1]) && $m[1] > -16 && $m[1] < 13) {
    echo 'its a valid gmt time';
} else {
    echo 'not valid gmt time';
}
于 2010-07-25T17:20:20.363 に答える
0

どうぞ:

  1. // 前に +,- を付けて 0 ~ 15 に一致させます。

    if(preg_match("/(+|-)([0-9]|1[1-5])/", $string)){
          //match process here 
    }
    

それはあなたの-15、+12と一致すると思います。

  1. すべての {+} 記号を取り除きます。

    // + を取り出して + に置き換えます $newString = str_replace(array("+"),"", $oldString);

于 2010-07-25T16:15:20.110 に答える
0

正規表現は次のようになります。

/\+?[0-9]|\+?1[0-2]|\-[1-9]|\-1[0-5]/

これは、0..12、+0..+12、-1..-15 と一致します。
+ 記号が必要な場合は、? なしで正規表現を使用してください。

次に、数値に対して str_replace を実行します。

$number = str_relace('+', '', $number);
于 2010-07-25T16:16:24.290 に答える