Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Регулярные выражения
bob marley  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 455
Пользователь №: 31246
На форуме: 5 лет, 2 месяца, 2 дня
Карма: 6

Трезвый :
5 лет, 2 месяца, 17 дней


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

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, благодарю!


--------------------
伊戈尔
PMПисьмо на e-mail пользователюСайт пользователяIntegrity Messenger IMICQAOLYahooMSN
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса