проверить время по Гринвичу смещение и чередование с регулярным выражением? - PullRequest
1 голос
/ 25 июля 2010
// 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. на втором {}, можем ли мы как-то убрать знак +, используя регулярное выражение?

  3. Правильный ли диапазон gmt?От -14 до +12 (ну вот что я вижу на http://www.php.net/manual/en/timezones.others.php)

Спасибо

Ответы [ 5 ]

1 голос
/ 25 июля 2010
$string = '+7';
if (in_array($string, range(-15, 12))) {
    echo 'its a valid gmt time';
} else {
    echo 'not valid gmt time';
}
1 голос
/ 25 июля 2010
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);   
0 голосов
/ 25 июля 2010

Регулярное выражение может быть:

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

Это соответствует 0..12, +0 .. + 12, -1 ..- 15
Если требуется знак +, используйтеRegExp без?.

, затем просто сделайте str_replace для числа:

$number = str_relace('+', '', $number);
0 голосов
/ 25 июля 2010

Я бы сделал:

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';
}
0 голосов
/ 25 июля 2010

Вот, пожалуйста,

  1. // соответствует 0-15 с +, - перед.

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

Это будет соответствовать твоим -15, + 12, я думаю.

  1. Чтобы убрать все знаки {+}.

    // вынуть + и заменить на + $ newString = str_replace (array ("+"), "", $ oldString);

...