powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Разминка для мозгов
25 сообщений из 271, страница 7 из 11
(PHP) Разминка для мозгов
    #37119866
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

У меня на 137 символов получилась. А ты группировку какими скобками делал?)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37119896
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А алиасов в PCRE нет?
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37119943
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettr u,

У меня на 137 символов получилась. А ты группировку какими скобками делал?)
ну так давай что получилось. посмотрим) обсудим
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37120026
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<form action="" method="post">
    <label  for ="date"> Date : </label>
    <input name="date" id="date" value="<?=isset($_POST['date'])? $_POST['date'] : '';?>">
    <input type="submit">
</form>

<?

$p = '#^(?:(?:01|03|05|07|08|10|12)\.(?:0[1-9]|[1-2][0-9]|30|31)|'.
      '(?:04|06|09|11)\.(?:0[1-9]|[1-2][0-9]|30)|'.
      '(?:02\.(?:0[1-9]|1[0-9]|2[0-8])))'.
      '\.\d{4}$#';


 if ( isset ($_POST['date']))
{
     echo ( preg_match ($p, $_POST['date']))? 'Yes' : 'No';
}
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37120471
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

-непонял если честно что такое например (?:01|03|05|07|08|10|12)
-непропускает много дат, например 28.02.2010, 30.05.2010 ну и тд тоесть надо пилить дальше)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37120838
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, конечно, у меня формат даты получился ММ.ДД.ГГГГ , сплю на ходу

Код: plaintext
1.
2.
3.
$p = '#^(?:(?:0[1-9]|[1-2][0-9]|30|31)\.(?:01|03|05|07|08|10|12)|'.
      '(?:(?:0[1-9]|[1-2][0-9]|30)\.04|06|09|11)|'.
      '(?:(?:0[1-9]|1[0-9]|2[0-8])\.02))'.
      '\.\d{4}$#';
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37121045
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

нет. по прежнему не пашет для 30.11.2010, 11.11.2010 и т.д.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37121407
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

у меня получились шаблоны:
- просто матчит - 87 символов
- с расставленными ?: чтоб запоминал и возвращал только значимые сегменты dd mm yyyy - 111 символов
кто меньше? )
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122135
авторИМХО, задачка поинтереснее: используя любой функционал PHP (кроме написания расширения на C с ассемблерными вставками :D и всех функций и классов раздела datetime) написать функцию, возвращающую true или false в зависимости от соответствия даты некоторым условиям (четко оговорить условия) и чтобы она была быстрее остальных реализаций на 10 миллионах итераций по рандомным входным данным (распределение - ~50% соответствуют, ~50% не соответствуют из-за передачи совершенно не даты, но строки или передачи невалидной даты).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
            $str = '01.02.2011'; // DD.MM.YYYY
            
            $matches =  NULL ;
            $pattern = "/(\d{2}).(\d{2}).(\d{4})/i";
            $arr =  array ( 1  =>  31 ,
                 2  =>  28 ,
                 3  =>  31 ,
                 4  =>  30 ,
                 5  =>  31 ,
                 6  =>  30 ,
                 7  =>  31 ,
                 8  =>  31 ,
                 9  =>  30 ,
                 10  =>  31 ,
                 11  =>  30 ,
                 12  =>  31 );

             preg_match ($pattern, $str, $matches);
             if  ( $matches && 
                    (int)$matches[ 1 ] <= $arr[(int)$matches[ 2 ]] )  return   true ;
            
             return   false ;
LeapYear and etc. сам придумай! ;)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122185
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...,

пропустит 0000000000.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122374
авторпропустит 0000000000.
хм... м.б. - пробовать влом! + значит в регулярках пыха не всё шоколадно! ;)
ИМХО, просто, нужно подобрать необходимый регексп, а так, вполне!
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122390
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как меня смешат такие постеры: неправильную ремарку на иностранном языке и смайлик в конце вставить умудрился, а за свой код не в ответе. С регэкспами всё ОК, просто у кого-то логика не работает в голове, соответственно это логику он не может перенести в код. . (точка) в регэкспе принимает любой символ и много людей до тебя УЖЕ показали, что вместо неё надо использовать \. (эскейп-точка). Мало того, если сматчится 00, то очевидно он будет <28 <30 <31 etc, не хватает условия > 0. Ну и чисто субъективно даже с такой простой регуляркой обогнать любую простенькую реализацию без регулярок вовсе ты на 10 млн. итераций не сможешь.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122394
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще посмешил модификатор /i. :) У нас есть заглавные и строчные цифры (\d)?
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122513
авторЕще посмешил модификатор /i. :) У нас есть заглавные и строчные цифры (\d)?
честно, мне плевать на ваши заглавные и строчные! я предложил вариант, до которого, судя по всему, ты не додумался ;)
а уж как я, там реализовал регулярку, вместо меня подумаешь ты!
авторНу и чисто субъективно даже с такой простой регуляркой обогнать любую простенькую реализацию без регулярок вовсе ты на 10 млн. итераций не сможешь.
вдвойне - плевать! понадобиться др. исполнение - придумаю другое решение
авторпропустит 0000000000.
Код: plaintext
1.
2.
3.
 if  ( $matches && 
                     array_key_exists ((int)$matches[ 2 ], $arr) &&
                    (int)$matches[ 1 ] <= $arr[(int)$matches[ 2 ]] )  return   true ;

LOL - относись к форуму, как к форуму - а не как к способу реализации собственных амбиций - настроение сразу улучшиться! ;)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122546
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
 return  ( $matches && 
                     array_key_exists ((int)$matches[ 2 ], $arr) &&
                    (int)$matches[ 1 ] <= $arr[(int)$matches[ 2 ]] );
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122554
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...,

я тут решение еще не выкладывал, чтобы тешить свои амбиции. :) А сагрить тролля всегда пожалуйста. Про isset, как и про \. вы не в курсе? :) Ваш последний вариант пропустит 0100100000.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122560
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще бред, сначала составить не верную регулярку, а потом пытаться исправить это уже на уровне остальной логики, при этом преследуя основной целью - максимальную производительность.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122565
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

да ладно, пускай малыш учится - язык-то тяжелый, думать много надо. :)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122701
авторя тут решение еще не выкладывал, чтобы тешить свои амбиции. :)
выложишь обсосём!
авторда ладно, пускай малыш учится - язык-то тяжелый, думать много надо. :)
угу - 9873673
авторА вообще бред, сначала составить не верную регулярку, а потом пытаться исправить это уже на уровне остальной логики, при этом преследуя основной целью - максимальную производительность.
бред - не использовать встроенные функции (datetime)!!! ну, это так - лирическое отступление.
авторВаш последний вариант пропустит 0100100000.
Код: plaintext
1.
$pattern = '/(\d{2})\.(\d{2})\.(\d{4})/';
что-то ещё, относительно регулярного выражения?! ;)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122734
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторчто-то ещё, относительно регулярного выражения?! ;)

То что он будет считать валидной строку 00.00.000000000 )
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122754
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...,

к сожалению (вашему :DDDDDDDDDDDDDDDD), да. Регулярка пропустит aaa01.01.0000aaa. :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

как-то так...честно, мне плевать на ваши заглавные и строчные! я предложил вариант, до которого, судя по всему, ты не додумался ;)
а уж как я, там реализовал регулярку, вместо меня подумаешь ты!
вдвойне - плевать! понадобиться др. исполнение - придумаю другое решение
LOL - относись к форуму, как к форуму - а не как к способу реализации собственных амбиций - настроение сразу улучшиться! ;)
Так вот. Если тебе плевать, не правь ошибки - тебе же плевать?! Вместо тебя думать я не буду, не расплатишься за такие услуги. Вдвойне плевать тем более не надо, так как может получиться, что через пару страниц ты будешь думать над другим исполнением (если текущие весомые правки не считать таковыми).

Относись к форуму и людям, которые хотят помочь твоему обучению, с уважением, а не так, как сейчас. Люди к тебе тоже начнут относиться хорошо (в том числе я). В подтверждение к этому ты сам же привел ссылку моего адекватного поведения [msg 9873673]. Если я чего-то не знаю и меня люди поправляют, я свою ошибку признаю и пытаюсь в будущем её исправить, а не агриться, чего и тебе советую.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122758
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

черт. Зря я показал, что регулярка с двух сторон пропустит лишние символы. :) Надо было как вы.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122762
авторТо что он будет считать валидной строку 00.00.000000000 )
так или иначе, тебе придётся проверить, не будет ли год высокосным - так, что не заморачивайся! ;)
ну, или заморочся! ;)))
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122805
<жёсткий OFF>
авторОтносись к форуму и людям, которые хотят помочь твоему обучению, с уважением, а не так, как, сейчас.
1 - самое главное - я здесь ни у кого ничего не спрашивал - просто предложил вариант решения задачи - почему ты записался в мои преподаватели, я так и непонял?! + как сейчас?! тоже не совсем понятно ;)

2 - прочти 10251857 10251869 в последовательности твоих\моих ответов + подумай над состоятельностью своего совета
автора не агриться, чего и тебе советую.
3 - авторВместо тебя думать я не буду, не расплатишься за такие услуги.
ты уже это делаешь (причём абсолютно бесплатно ;) - спс. тебе "добрый человек" !
<OFF>
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37122823
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...,

я не думаю, ибо свою версию уже реализовал и всё обдумал. :) Прежде чем приводить ссылки на мои посты, прочитай своё "сам придумай" - как ты, так и к тебе. Сами придумывать за тебя тут никто не будет.
...
Рейтинг: 0 / 0
25 сообщений из 271, страница 7 из 11
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Разминка для мозгов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]