[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна помощь с preg_match
Skesh
Доброго времени суток, я не могу разобратся с preg_match, мне нужно проверить привильность формата такой даты: "07.10.2011, 14:31" (без кавычек) то есть: дд.мм.гггг, чч:мм
Помогите пожалуйсто.



Спустя 5 минут, 31 секунда (7.10.2011 - 14:37) Lightt написал(а):
preg_match(/[0-9]{2}.[0-9]{2}.[0-9]{4},[0-9]{2}:[0-9]{2}/)


что то типо того

Спустя 3 минуты, 10 секунд (7.10.2011 - 14:40) Skesh написал(а):
Lightt а можеш обяснить что где означает? атож снова буду людей мучать, я буду очень признателен!! smile.gif

Спустя 1 минута, 50 секунд (7.10.2011 - 14:42) Lightt написал(а):

$subject = "22.12.2010,12:00";
$data = "/[0-9]{2}.[0-9]{2}.[0-9]{4},[0-9]{2}:[0-9]{2}/";

if (preg_match ($data, $subject))
{
echo "дата найдена";
}


Так понятней будет...
ищем числа от 0 до 9 {2} - это значит 2 числа ну и т.д.

Спустя 3 минуты, 19 секунд (7.10.2011 - 14:45) Skesh написал(а):
Lightt спасибо большое!!! А если скажем мне нужно проверить переменую, чтобы в ней были только цифры, и только цифры, такая запись подойдет?:

$subject = "221210"; 
$data = "/[0-9]{10}/";

if (preg_match ($data, $subject))
{
echo "дата найдена";
}



ну вот только я как бы не знаю сколько имено цифр в переменой, так правилно?

А еще вот этот код не работает:

$data = "/[0-9]{2}.[0-9]{2}.[0-9]{4},[0-9]{2}:[0-9]{2}/";
Сюда еще пробел после комы нужн, не подскажете как его туда всунуть?

Спустя 6 минут, 3 секунды (7.10.2011 - 14:51) dadli написал(а):
Skesh
вот здес почитаи, очен хорошая статя о регулярке
http://www.phpclub.ru/detail/article/regexp_1

Спустя 13 минут, 17 секунд (7.10.2011 - 15:04) Lightt написал(а):
Цифры можешь проверить так -
$data ="/^[0-9]*$/";

А насчет пробела... ну просто поставь его в регулярке о_О после запятой -


$data = "/[0-9]{2}.[0-9]{2}.[0-9]{4}, [0-9]{2}:[0-9]{2}/";


И насчет того кода)) он правда не совсем корректен если введешь время 66:99 он так же отобразит что это время)

Спустя 28 минут, 7 секунд (7.10.2011 - 15:33) killer8080 написал(а):
Lightt
зачем прописывать символьный класс [0-9], когда можно проще \d
и символ "точка" нужно экранировать так \.

Спустя 2 минуты, 16 секунд (7.10.2011 - 15:35) Invis1ble написал(а):
checkdate()

а регулярками слишком геморно, если интересует - посмотри здесь пример и ужаснись smile.gif

Спустя 4 минуты, 45 секунд (7.10.2011 - 15:40) Lightt написал(а):
killer8080
Насчет проще это спорно... мне как бы гораздо проще запомнить [0-9] это чем какую то букву, и в каком то регистре, включил капс, и ищи потом в чем проблема пол ночи. \d чем то реально лучше?
Ну и если уж на то пошло то и пробел \s но как бы работает и без этого, смотря для каких целей =) если ему например лабу надо сдать в универе, то уж лучше кода по минимуму и как можно понятней, если для чего то важного, то все равно ему придется читать про регулярки.

Спустя 7 минут, 4 секунды (7.10.2011 - 15:47) Skesh написал(а):
Нужно для сайта, проверить правильность ввода даты пользователем. Нащет пробела - пробывал, не работает, 66:99 такой результат тоже не годится, возможно ли вобще использовать preg_match для проверки дыты/время?
Invis1ble а как проверить время с помощю checkdate?

Спустя 4 минуты, 16 секунд (7.10.2011 - 15:51) Invis1ble написал(а):
Цитата
возможно ли вобще использовать preg_match[b] для проверки таких дыты/время?

возможно, я ведь дал ссылку на свой пост с примером для проверки корректности даты, дополнительно можно и проверку времени ввести
насчет ф-ций для проверки - не помню, покури мануал или напиши свою

Спустя 8 минут, 22 секунды (7.10.2011 - 15:59) Игорь_Vasinsky написал(а):
Цитата
мне нужно проверить привильность формата такой даты: "07.10.2011, 14:31"


Invis1ble
твой топик почти бы подошёл, его тока малость усовершенствовать, чтоб и время проверя... ну это фигня по сравнению что ты там сделал уже.

Спустя 2 минуты, 29 секунд (7.10.2011 - 16:02) Invis1ble написал(а):
Игорь_Vasinsky
я просто показал, что в принципе это возможно сделать регулярками. Если у ТС есть желание, пусть допишет мою регулярку smile.gif

Спустя 3 минуты, 13 секунд (7.10.2011 - 16:05) Игорь_Vasinsky написал(а):
и я об этом же.
wink.gif

Спустя 9 минут, 57 секунд (7.10.2011 - 16:15) killer8080 написал(а):
Skesh
лови
function check_date($str){
if(!preg_match('#^(\d{2})\.(\d{2})\.(\d{4}), *(\d{2}):(\d{2})$#', $str, $match))
return false;

list(, $day, $month, $year, $hours, $minutes) = $match;

if(!checkdate($month, $day, $year))
return false;

if($hours > 23 || $minutes > 59)
return false;

return true;
}

Спустя 1 час, 1 минута, 39 секунд (7.10.2011 - 17:17) Skesh написал(а):
Слабоват я в PHP чтобы дописать самому, но если никто не подскажет пойду искать дальше smile.gif

Спустя 1 минута, 22 секунды (7.10.2011 - 17:18) Skesh написал(а):
Ешкин кот, killer8080 спасибо большое, удружил! =)

Спустя 38 минут, 55 секунд (7.10.2011 - 17:57) killer8080 написал(а):
Skesh
вот более компактный вариант
function check_date($str){
if(!preg_match('#^(\d{2})\.(\d{2})\.(\d{4}), *(\d{2}):(\d{2})$#', $str, $m))
return false;

return checkdate($m[2], $m[1], $m[3]) && $m[4] < 24 && $m[5] < 60;
}

Спустя 5 часов, 23 минуты, 25 секунд (7.10.2011 - 23:20) Skesh написал(а):
Еще раз спасибо! Вот уважаю людей которые дают то что просят, а не "дельные советы".

Спустя 12 минут, 32 секунды (7.10.2011 - 23:33) Invis1ble написал(а):
Цитата
Вот уважаю людей которые дают то что просят, а не "дельные советы"

мда.... нет слов.....


_____________
*пускает слюну, глядя на код* :)
Быстрый ответ:

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