Помощник
|
регулярное выражение |
Panich
|
Сообщение
#1
|
||
|
|
||
|
|||
P0ZiTR0N |
26.5.2011, 17:34;
Ответить: P0ZiTR0N
Сообщение
#2
|
|
$i =?
|
|
|
Panich
|
Сообщение
#3
|
|
[PHP]<?php
include ("bd.php"); $result4 = mysql_query("SELECT * FROM users WHERE login='$login' LIMIT 1", $db)or die("Ошибка в запросе: " . mysql_error()); $myrow4 = mysql_fetch_array($result4); if (empty($myrow4['avatar'])) { $avatar = "../files/avatars/net-avatara.jpg"; } else { $avatar=$myrow4['avatar']; } $id = $myrow4['id']; $name = $myrow4['name']; $pol = $myrow4['pol']; $vozr_namber = $myrow4['vozr_namber']; $vozr_mouns = $myrow4['vozr_mouns']; $vozr_year = $myrow4['vozr_year']; $sity = $myrow4['sity']; $pass = $myrow4['pass']; $login = $myrow4['login']; $day = date("d"); $mauns = date("m"); $year = date("Y"); $age_day = $day - $vozr_namber; $age_mauns = $mauns - $vozr_mouns; $vozrast = $year - $vozr_year; if ($age_mauns < 0 and $age_day < 0) { $vozrast = $vozrast - 1; } else{} if (preg_match("[5-20|25-30|35-40|45-50|55-60]", $vozrast)) { $let = "лет"; } else{ if(preg_match("(1|21|31|41|51)", $vozrast)) { $let = "год"; } else{ if(preg_match("(2-4|22-24|32-34|42-44|52-54)", $vozrast)) { $let = "года"; } else{} } } echo $let; $HTML='<table id="for_tabel_reg"> <tr> <td class="sity">'.$sity.'</td> </tr> <tr> <td> <strong class="name">'.$name.'</strong><em class="age_user"> '.$vozrast.' '.$let.'</em> </td> </tr> <tr> <td> <a><img class="img" alt="" src="'.$avatar.'"></a> </td> </tr> </table>'; print $HTML; ?>[/PHP] Хочу что бы когда в переменной $vozrast было число,равное реальному возрасту пользователя регулярное выражение проверяло его и в зависимости от значения дописывало в таблице слова "лет, года, года", что бы небыло на сайте глупости на подобие "32 лет" И ещё вопрос: возможно ли вместо вытаскивания даты из установленной на компьютере пользователя с помощью выражения [PHP] $day = date("d"); $mauns = date("m"); $year = date("Y");[/PHP] вытаскивать дату на сервере?Точнее знаю,что возможно,но с помощью какого выражения? Так же точнее будет?Качественнее? |
|
|
P0ZiTR0N |
26.5.2011, 17:56;
Ответить: P0ZiTR0N
Сообщение
#4
|
|
Понял.. В общем на скорую руку (поидее должно работать):
[PHP] $i = 16; $n = preg_match("/^[{10,15}|{25,50}]+$/",$i); echo $i. "\n\r". $n; //выведет 16 0... [/PHP] Кстати, диапазон задаётся {a,z}, а не (a-z) Аналогично и для второй проверки: [PHP]$i = 17; $n = preg_match("/^[3|17|80]+$/",$i); echo $i. "\n\r". $n; \\выведет 17 1 [/PHP] |
|
|
P0ZiTR0N |
26.5.2011, 18:04;
Ответить: P0ZiTR0N
Сообщение
#5
|
|
|
|
|
Panich
|
Сообщение
#6
|
|
Попробовал заменить:
[PHP]<?php if (preg_match("/^[{5,20}|{25,30}|{35,40}|{45,50}|{55,60}]+$/", $vozrast)) { $let = "лет"; } else{ if(preg_match("/^[1|21|31|41|51]+$/", $vozrast)) { $let = "год"; } else{ if(preg_match("/^[{2,4}|{22,24}|{32,34}|{42,44}|{52,54}]+$/", $vozrast)) { $let = "года"; } else{} } } $HTML='<table id="for_tabel_reg"> <tr> <td class="sity">'.$sity.'</td> </tr> <tr> <td> <strong class="name">'.$name.'</strong><em class="age_user"> '.$vozrast.' '.$let.'</em> </td> </tr> <tr> <td> <a><img class="img" alt="" src="'.$avatar.'"></a> </td> </tr> </table>'; print $HTML; ?>[/PHP] Переменная $vozrast равна 32-ум. На экране браузера выводит "32 лет" вместо 32 года! |
|
|
Apay |
26.5.2011, 18:23;
Ответить: Apay
Сообщение
#7
|
|
Кстати, диапазон задаётся {a,z}, а не (a-z) или я что-то путаю, иливообще-то в регулярках так:[a-z] - диапазон символов, то есть любой символ из от a до z {2,5} - это преддыдущая маска/символ повторяется от 2 до 5 раз P0ZiTR0N, в первом вырианте $i='|'; выдаст true во 2 варианте $i=18; тоже выдаст true то есть ничего не работает правильно а по теме, оптимальней всего сравнивать int [PHP]$i = (int) $i; if( $i >= 10 && $i <= 15 || $i >= 25 && $i <= 50 )[/PHP] и [PHP]$i = (int) $i; if( $i == 3 || $i == 17 || $i == 80 )[/PHP] |
|
|
P0ZiTR0N |
26.5.2011, 18:27;
Ответить: P0ZiTR0N
Сообщение
#8
|
|
|
|
|
Panich
|
Сообщение
#9
|
|
Думал не расписывать долгие выражения,а лишь однним регулярным справиться,но придётся теперь кодить как Вы сказали!Главное,что бы потом на форумах не тыкали носом,что глупо написал...)))
Спасибо! |
|
|
Apay |
26.5.2011, 18:38;
Ответить: Apay
Сообщение
#10
|
|
Panich, проще надо быть
[PHP] $i1 = $i % 10; if( $i1 > 4 || $i1 == 0 || $i > 10 && $i < 15 ) $s = 'лет'; elseif( $i1 == 1 ) $s = 'год'; else $s = 'года';[/PHP] |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Регулярное наполнение новостного сайта провинциального города | 15 | 4enki | 3629 | 10.3.2016, 22:39 автор: 4enki |
|
Результативные прогоны Хрумером по свежесобранным базам для поднятия позиций в Yandex и Google (Выдача, тИЦ, PR)… Регулярное обновление баз. | 275 | Kroner | 146888 | 23.4.2015, 11:57 автор: Kroner |
Текстовая версия | Сейчас: 29.3.2024, 13:43 |