// 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'; }
Вопрос:
посмотрите первое {} на preg_match, то, как мы можем сделать это? Я являюсь новым на regex, и я просто не знаю, где запустить
на втором {} мы можем так или иначе разделить + знак useing regex?
диапазон по Гринвичу, является правильным?-14 к +12 (хорошо это - то, что я вижу на http://www.php.net/manual/en/timezones.others.php),
Спасибо
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;
}
}
edit*
ive just notice that if you are at 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);
Я бы сделал:
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-15 со знаком +,- впереди.
if(preg_match("/(+|-)([0-9]|1[1-5])/", $string)){
// процесс совпадения здесь
}
Это будет соответствовать вашим -15,+12, я думаю.
Чтобы убрать все знаки {+}.
//убрать + и заменить на + $newString = str_replace(array("+"),"", $oldString);
Regexp может быть таким:
/\+?[0-9]|\+?1[0-2]|\-[1-9]|\-1[0-5]/
Это будет соответствовать 0..12, +0..+12, -1..-15
.
Если требуется знак +, используйте RegExp без ?
затем просто выполните str_replace для числа:
$number = str_relace('+', '', $number);
$string = '+7';
if (in_array($string, range(-15, 12))) {
echo 'its a valid gmt time';
} else {
echo 'not valid gmt time';
}