Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Определить любое четырехзначное число

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как проще?
mindinbox
Отправлено: 18 Января, 2016 - 16:22:23
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Есть условие

PHP:
скопировать код в буфер обмена
  1.  
  2. if ($logs_usr == "" || $logs_usr == "date=" || $logs_usr == "date= 'ЛЮБОЕ ЧЕТЫРЕХЗНАЧНОЕ ЧИСЛО' ") {
  3. }
  4.  


Как указать в строке "date= 'любое четырехзначное число' "
Хочется без предварительных проверок и регулярок, есть такой вариант?
 
 Top
re_nat
Отправлено: 18 Января, 2016 - 16:46:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




Нет
 
 Top
DelphinPRO
Отправлено: 18 Января, 2016 - 16:49:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




re_nat, почему нет-то? Четырехзначных чисел не так уж и много

PHP:
скопировать код в буфер обмена
  1. if ($logs_usr == ""
  2.     || $logs_usr == "date="
  3.     || $logs_usr == "date= '0001' "
  4.     || $logs_usr == "date= '0002' "
  5.     || $logs_usr == "date= '0003' "
  6.     // ...
  7.     || $logs_usr == "date= '9999' "
  8. ) {
  9. }


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Panoptik
Отправлено: 18 Января, 2016 - 16:50:37
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)





or
PHP:
скопировать код в буфер обмена
  1. $logs_usr > 1000 && $logs_usr < 9999


-----
Just do it
 
 Top
re_nat
Отправлено: 18 Января, 2016 - 16:56:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




Panoptik, не годится, у него там не только цифры.
DelphinPRO, круто, возьму на заметку!))
 
 Top
DelphinPRO
Отправлено: 18 Января, 2016 - 17:00:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Я тут покумекал и оптимизировал скрипт

PHP:
скопировать код в буфер обмена
  1. $temp  = array();
  2. for($i=0; $i <= 9999; $i++) $temp[] = "date= '$i' ";
  3. if ($logs_usr == ""
  4.     || $logs_usr == "date="
  5.     || in_array($logs_usr, $temp)
  6. ) {
  7. }


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
re_nat
Отправлено: 18 Января, 2016 - 17:16:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




Омг
PHP:
скопировать код в буфер обмена
  1. if ($logs_usr == "" || $logs_usr == "date=" || ($tmp = substr($logs_usr, 6, 4) >= 1000 && substr($logs_usr, 6, 4) <= 9999)) {
  2.    
  3. }

(Отредактировано автором: 18 Января, 2016 - 17:18:26)

 
 Top
Мелкий Супермодератор
Отправлено: 18 Января, 2016 - 17:22:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Panoptik пишет:
or

and... Дроби же.
Первую проверку свободно пройдёт 10.9, вторую - 1989.543.

Регулярка будет проще.


-----
PostgreSQL DBA
 
 Top
mindinbox
Отправлено: 19 Января, 2016 - 09:02:41
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




оО Столько ответов, не ожидал)
Теперь много проще, придется все же подумать над регуляркой или использовать цикл \, что написал DelphinPRO. Спасибо за помощь!
 
 Top
DelphinPRO
Отправлено: 19 Января, 2016 - 11:26:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




mindinbox пишет:
или использовать цикл \, что написал DelphinPRO


Стоп машина!
Дельфин жестко пошутил. Никогда так не делай.
Регулярка тут самое правильное решение. И думать над ней нечего. Она простая

PHP:
скопировать код в буфер обмена
  1. || preg_match("~^date=\s'[\d]{4}'\s$~", $logs_usr)

(Отредактировано автором: 19 Января, 2016 - 11:27:42)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
mindinbox
Отправлено: 19 Января, 2016 - 11:33:03
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Ага, ну я тоже почти к этому пришел)
И цикл вполне себе справляется, но регулярка конечно проще.
Спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB