[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения
bob marley
Добрый вечер,я плохо разбираюсь в регулярных выражениях..
Вот мой код,в чем беда не знаю..
Но очень хотелось бы узнать..
Простите,что надоедаю вас вопросами по регуляркам
Код:
Свернутый текст

if(isset($user))
{
echo $user['name']." ".$user['oldname'].", ";
if(preg_match("/[2-4|22-24|32-34|42-44|52-54|62-64|72-74|82-84]$/u", $user['year']) == true)
{
$tell = $user['year'].'года';
}
if(preg_match("/[1|21|31|41|51|61|81]$/u", $user['year']) == true)
{
$tell = $user['year'].'год';
}
if(preg_match("/[5-20|25-30|35-40|45-50|55-60|65-70|75-80]$/u", $user['year']) == true)
{
$tell = $user['year']."лет";
}
echo $tell;
}


Ошибка в самом нижнем..Но я думаю,что и в первом и втором не совсем все корректно и думаю,что это мягко сказано..



Спустя 26 минут, 7 секунд (21.03.2012 - 22:09) bob marley написал(а):
А можно наверно и без регулярок обойтись?
Если можно,то плиз покажите как..Просто можно конечно
if($user['year'] == '5' || $user['year'] == '6') || ....
Но это слишком долго и много..
Если есть решение,то напишите мне его..И если не трудно причину почему не работает регулярка..Так для развития..А то столкнусь ещё раз с токой проблемой и не буду знать как исправить..

Спустя 39 минут, 38 секунд (21.03.2012 - 22:49) inpost написал(а):
[] - любой из перечисленных символов. В количестве одного символа(!!!)
[15|20] - значит, что человек может ввести ЛЮБОЙ ОДИН символ из маски вариантов: "0125|"

Спустя 7 часов, 12 минут, 31 секунда (22.03.2012 - 06:01) Visman написал(а):
bob marley, тут регулярки не нужны.
Бери остаток от деления на 10.
Если = 1, то год.
Если < 5, то года.
Все остальное - лет.

Спустя 20 минут, 22 секунды (22.03.2012 - 06:22) Visman написал(а):
Правда 11, 12, 13, 14 являются исключением sad.gif

Спустя 3 часа, 36 минут, 50 секунд (22.03.2012 - 09:59) Winston написал(а):
Свернутый текст
function variation($num, $words = array())
{
$num = $num % 100;
if($num > 19)
$num = $num % 10;
switch($num)
{
case 1:
return $words[0];
break;
case 2:
case 3:
case 4:
return $words[1];
break;
default:
return $words[2];
}
}


echo variation(0, array('год', 'года', 'лет')) . '<br/>';
echo variation(1, array('год', 'года', 'лет')) . '<br/>';
echo variation(2, array('год', 'года', 'лет')) . '<br/>';
echo variation(3, array('год', 'года', 'лет')) . '<br/>';
echo variation(5, array('год', 'года', 'лет')) . '<br/>';

Спустя 3 часа, 21 минута, 1 секунда (22.03.2012 - 13:20) bob marley написал(а):
Visman
Вот именно.И я уже думал об этом!
inpost
А как мне сделать корректно?

Спустя 21 минута, 44 секунды (22.03.2012 - 13:41) Visman написал(а):
bob marley
Winston решение предложил.

Спустя 4 часа, 26 минут, 17 секунд (22.03.2012 - 18:08) bob marley написал(а):
Visman
Он не решение мне предложил,а кинул код!Без всякого пояснения..
Я лично пару функций из этого кода не знаю!Зачем мне чужой код на сайте?
Решение блин..Лучше бы текстом написал,что мне нужно сделать..Причем тут больше 19..Я вообще ничего не понял короче..И зачем на сто делить..Не понятно!

Спустя 8 минут, 27 секунд (22.03.2012 - 18:16) nugle написал(а):
так попробуй
if(isset($user))
{
echo $user['name']." ".$user['oldname'].", ";
if(preg_match("/^[1-9]*[2-4]$/", $user['year']) == true)
{
$tell = $user['year'].'года';
}
if(preg_match("/^[1-9]*1$/", $user['year']) == true)
{
$tell = $user['year'].'год';
}
else
{
$tell = $user['year']."лет";
}
echo $tell;
}

Спустя 3 минуты, 40 секунд (22.03.2012 - 18:20) Visman написал(а):
bob marley
Использовать так
$str = variation(ТУТ ЧИСЛО, array('год', 'года', 'лет'));

Вернет правильное написание из списка 'год', 'года', 'лет'.
Цитата (bob marley @ 22.03.2012 - 23:08)
Причем тут больше 19

При остатке от деления на 100 больше 19 исключений нет, из-за этого проверка и сделана.
Цитата (bob marley @ 22.03.2012 - 23:08)
И зачем на сто делить.

Если распишешь числа от 1 до 99 и пропишешь к ним год, года или лет, то поймешь.

Спустя 2 часа, 53 минуты, 12 секунд (22.03.2012 - 21:13) bob marley написал(а):
Цитата (Visman @ 22.03.2012 - 15:20)
Использовать так

Я тебе,что нуб?!
Я уже написал,что я не буду чужим кодом пользоваться.
Цитата (Visman @ 22.03.2012 - 15:20)
$str = variation(ТУТ ЧИСЛО, array('год', 'года', 'лет'));

Что правда?!Прикольно..не знал..

Спустя 1 минута, 1 секунда (22.03.2012 - 21:14) bob marley написал(а):
nugle, а можешь объяснить свои регулярные выражения..Если не трудно,конечно..

Спустя 5 минут, 1 секунда (22.03.2012 - 21:19) bob marley написал(а):
Цитата (Visman @ 22.03.2012 - 15:20)
Если распишешь числа от 1 до 99 и пропишешь к ним год, года или лет, то поймешь.

Все равно не понял ничего.Короче не важно.

Спустя 4 минуты, 1 секунда (22.03.2012 - 21:23) nugle написал(а):
1)[1-9]* тут идет соответствие на числа двузначные, трезначные и т.д.
2) [2-4] проверка на окончательные цифры, т.е. 102 года и т.д.

Спустя 2 минуты, 55 секунд (22.03.2012 - 21:26) bob marley написал(а):
nugle, благодарю!


_____________
伊戈尔
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.