[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
Игорь_Vasinsky
neadekvat
Цитата
Но вообще, разве в регэкспах php можно делать вычисления?

хз.. но вот проверять не совпадения можно
?<!


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
neadekvat
Игорь_Vasinsky, так у нас же вродь ГГГГ.ММ.ДД?

Вот, версия 0.2, для февраля:
echo (int) preg_match('#^\d{4}\.(?:0[1-9]|1[0-2])\.(?(?<=02.)([0-2][0-8])|([0-2][0-9]|3[01]))$#', $date);


upd. Чуть приблизить это к "понятности".
$year = '\d{4}';
$month = '(?:0[1-9]|1[0-2])';
$day = '(?(?<=02.)([0-2][0-8])|([0-2][0-9]|3[01]))';
echo (int) preg_match("#^$year\.$month\.$day$#", $date);
bodja
Еще не забываем про 29 только в высокосном,
кстати ума не приложу,к чему это можно применить?
Invis1ble
Цитата
кстати ума не приложу,к чему это можно применить?

это просто тренировка в регулярках

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

neadekvat
Я таки продолжаю ждать контр. аргументы на вер. 0.2, т.к. дальше идти с багами смысла нет.
neadekvat
Господа и дамы (если таковые есть), я думаю, на регулярках в php эту задачу полностью решить невозможно, т.к. они не поддерживают арифметические действия.
Invis1ble
neadekvat
я думаю, возможно решить. По-крайней мере я недалек от решения.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

bodja
31 апреля,июня,сентября,ноября

ЗЫ Щаа Invis1ble выдаст biggrin.gif
ЗЫЫ В регулярках дуб,так что сваливаю,даже не начав. biggrin.gif biggrin.gif biggrin.gif
Игорь_Vasinsky
я вспотел! с этими условиями в регэксп... наблюдаю.
говорил же... в селектах даты... в селектах... и сразу тренеровки...

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
Я бы без регулярки такое сделал бы smile.gif Зачем злоупотреблять smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Invis1ble
Цитата
Щаа Invis1ble выдаст

насчет щас неуверен, но то что выдам - это я постараюсь smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

bodja
inpost
Ага,типа
bool checkdate ( int $month , int $day , int $year )

ЗЫ Ну пускай,это же спортивный интерес.
neadekvat
function is_leap($year)
{
if ( ! ($year % 4))
if ($year % 100)
return true;
elseif ( ! ($year % 400))
return true;

return false;
}

function valid_date($date)
{
$year = '(\d{4})';
$month = '(0[1-9]|1[0-2])';
$day = '(?(?<=02.)([0-2][0-9])|([0-2][0-9]|3[01]))';

if ( ! preg_match("#^$year\.$month\.$day$#", $date, $out))
return false;

if ($out[2] == '02' && $out[3] == '29')
if (is_leap($out[1]))
return true;
else
return
false;

return true;
}

$date = '1234.02.29';

echo (int) valid_date($date);


И тут Остапа понесло...

P.S. Сознательно старался сделать своими силами.
Быстрый ответ:

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