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]   

> Без описания
BMW M6
Отправлено: 11 Августа, 2013 - 15:54:10
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2013  


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




Всем привет Улыбка
Есть переменная $color в неё попадает значение из $_POST[color] так вот как сделать проверку того, что туда точно попал цвет по html (пример #f00 и.т.д.) Я делал похожие проверки вот так через !preg_match. Но с цветами html не получается помогите пожалуйста.
 
 Top
caballero
Отправлено: 11 Августа, 2013 - 16:00:49
Post Id


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


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


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




цвет это целое число от 0 до 0xFFFFFF

на фига там вообше регулярки


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
VestCoastman
Отправлено: 11 Августа, 2013 - 16:00:52
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1. if(!preg_match('/#[a-f0-9]{3,6}/i', $color)){exit("Ошибка цвета");}
 
 Top
soffrick
Отправлено: 11 Августа, 2013 - 16:02:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


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




BMW M6 пишет:
как сделать проверку того, что туда точно попал цвет по html (по феншую)

если red,green, blue,orange,yellow, то white list?
если rgb, то regexp?
если hex, то between 0 and 0xFFFFFF

(Отредактировано автором: 11 Августа, 2013 - 16:15:18)



-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
BMW M6
Отправлено: 11 Августа, 2013 - 16:18:33
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2013  


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




soffrick пишет:
если hex, то between 0 and 0xFFFFFF

Что то не понимаю я...
Меня интересует именно hex.
 
 Top
caballero
Отправлено: 11 Августа, 2013 - 16:25:34
Post Id


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


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


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




не понимаешь что hex это целое число? ну пример регулярки тебе написали выше.

Мде...
Уровень програмистов растет с каждым днем. Уже даже шестадцатиричные числа не понимают.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
LIME
Отправлено: 11 Августа, 2013 - 16:33:51
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




как бэ еще надо учесть что 0xFFFFFF != 0xFFF
 
 Top
Саныч Модератор
Отправлено: 11 Августа, 2013 - 16:49:53
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




caballero пишет:
цвет это целое число от 0 до 0xFFFFFF
Не совсем так. К примеру, 0xABCD. Это число от 0 до 0xFFFFFF, а вот цвета такого нет...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Саныч Модератор
Отправлено: 11 Августа, 2013 - 19:25:58
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Заморочился я тут малось этим вопросом. Результат:
PHP:
скопировать код в буфер обмена
  1. function isValidColor($color) {
  2.     if (!is_string($color)) {
  3.         trigger_error('Parameter 1 must be string, ' . gettype($color) . ' given', E_USER_WARNING);
  4.         return false;
  5.     }
  6.  
  7.     $color = str_replace(array("\f", "\n", "\r", "\t", "\v", ' '), '', strtolower($color));
  8.     $colors = array('transparent', 'white', 'silver', 'gray', 'black', 'maroon', 'red', 'orange', 'yellow', 'olive', 'lime', 'green', 'aqua', 'blue', 'navy', 'teal', 'fuchsia', 'purple');
  9.  
  10.     return in_array($color, $colors) ?: (bool) preg_match('#^(?:\#[\da-f]{3}|[\da-f]{6})|(?:rgb(a)?\((?:(?:1?\d{1,2}|2(5)?(?(2)[0-5]|[0-4]\d)),){2}(?:1?\d{1,2}|2(5)?(?(3)[0-5]|[0-4]\d))(?(1),(?:1(?:\.0+)?|0?\.\d+))\))|(?:hsl(a)?\((?:[1-2]?\d{1,2}|3[0-5]\d),1?\d{1,2}%,1?\d{1,2}%(?(4),(?:1(?:\.0+)?|0?\.\d+))\))$#i', trim($color));
  11. }

Функция проверяет цвет заданный в форматах: HEX, RGB, RGBA, HSL, HSLA или просто название цвета.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
BMW M6
Отправлено: 11 Августа, 2013 - 21:41:55
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2013  


Помог: 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