ФорумПрограммированиеPHP для идиотов → Проверка на типизацию

Проверка на типизацию

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 2:12 д.п.

    В силу ебанутости пхп в силу его простого перехода от одного типа к другому :-)

    вопрос - как бы вы прверили что СТРОКОВОЕ ЗНАЧЕНИЕ ЯВЛЯЕТСЯ ЦЕЛОЧИСЛЕННЫМ? :-)

    вы отвечайте, а я пока посмеюсь :-)

    то есть тест должен давать тру на строках "123123" и посылать нахуй при "23.12" например, то етсь интересует тест для целочисленных именно, таких как ID и прочее :-)
    Спустя 31 сек.
    ну а в конце мы все посмеемся над пхп и его синтаксисом для данной задачки с подвохом xD
    Спустя 29 сек.
    кстати интересная задачка на понимание основ и как работает динамическая типизация в этом долбоязыке)
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 2:18 д.п., спустя 6 минут 1 секунду

    в скайпе р2д2 не осилил, он привел все очевидные варианты и даже неочевидный и все это не сработало xDDDDD

    кто следующий?! ))))))))))
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Авг. 11, 2011, 2:22 д.п., спустя 4 минуты 15 секунд

    preg_match('/\d+/', $val)
    Спустя 30 сек.
    $val == floor($val)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 2:23 д.п., спустя 14 секунд


    preg_match('/\d+/', $val)
    толсто, + не пропустит отрицательные числа :-)
    ну и по скорости я не уважаю такие решения, из пушки как говорится :-)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Авг. 11, 2011, 2:24 д.п., спустя 1 минуту 34 секунды

    $val == (int)$val
    Спустя 29 сек.
    ты про отрицательные ничего не говорил в 1 посте)
    Спустя 29 сек.
    с каких пор айди - отрицательные? О_о
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 2:26 д.п., спустя 2 минуты 14 секунд

    Абырвалг,
    ЯВЛЯЕТСЯ ЦЕЛОЧИСЛЕННЫМ

    математику учи :-)


    $val == (int)$val

    неверно. попробуй например

    $val = "32aaee";
    var_dump((int) $val == $val);
    die();


    boolean true


    прогарммисты блядь, еще и магенщики xDDDDDDDDDD давай еще, я тут как раз попкорн открыл :)
    Спустя 33 сек.
    с каких пор айди - отрицательные? О_о

    не зацикливайся, это могут быть например координаты lat/lng.
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 2:41 д.п., спустя 14 минут 10 секунд

    Абырвалг, сдался слабак?! :D
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz Авг. 11, 2011, 2:42 д.п., спустя 1 минуту 41 секунду

    $val = "32aaee";
    var_dump((int) $val == $val);
    die();


    Если надо посмотреть есть ли дробная часть - этот способ подходит.
    Если отфильтровать на сайте - нет.

    Что-то такое возможно тебе нужно?
    $var = preg_replace('/[^0-9\-]/s', '', $var);
    intval($var) == $var;


    Скажи что тебе нужно сделать.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 2:45 д.п., спустя 2 минуты 29 секунд

    Что-то такое возможно тебе нужно?

    а проверить? нет, это не гол :-)

    $var = "32eeeaasdasd";
    $var = preg_replace('/[^0-9\-]/s', '', $var);
    var_dump(intval($var) == $var);
    die();


    boolean true


    Скажи что тебе нужно сделать.

    мне ничего :-) я то давно уже сделал) просто интересно как сделали бы ВЫ :-) задание написано в первом посте, все вроде очевидно написано :)
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz Авг. 11, 2011, 2:56 д.п., спустя 10 минут 51 секунду

    preg_match('#(\-)?\d+#', $string);

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 3 д.п., спустя 4 минуты 39 секунд

    Ivan,
    ну и по скорости я не уважаю такие решения, из пушки как говорится :-)


    регуляркой то проверить любой дурак может (без обид) :-)
    ну и у тебя группа была задействована непонятно для чего, ты же не выборки делаешь :)

    во первых, а во вторых щас я тебя и тут наебу :-)

    $var = "aa-2-huitebe:D";
    var_dump(preg_match('#(\-)?\d+#', $var));
    die();
    Спустя 22 сек.
    какая простая задача, сколько решений и все неработают, я плачу :D
    Спустя 13 сек.
    а нативное решение никто так и не нашел xD
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz Авг. 11, 2011, 3:07 д.п., спустя 6 минут 24 секунды

    Хорошо исправим ошибки, допущенные в сонливом состоянии

    #(\-)?\d+#
    \d - так делать нельзя, туда может проскользнуть всякое говно юникода
    aa-2- прошло вероятно из-за ошибки в расстановке скобок

    конечный вариант
    /^-?[0-9]+$/
  • inse3t

    Сообщения: 23 Репутация: N Группа: Адекваты

    Spritz Авг. 11, 2011, 3:07 д.п., спустя 11 секунд

    Одно есть работающее, ненадо тут!
    $x++; var_dump(is_int($x));
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz Авг. 11, 2011, 3:08 д.п., спустя 1 минуту 2 секунды

    регуляркой то проверить любой дурак может

    Я начинал программирование с Perl, возможно поэтому я думаю иначе
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 11, 2011, 3:10 д.п., спустя 2 минуты 30 секунд


    Одно есть работающее, ненадо тут!
    $x++; var_dump(is_int($x));

    интересное решение :-)

    порефаткорил чуток. С виду работает :-)

    $var = "4.2";
    var_dump(is_int(++$var));
    die();
    Спустя 34 сек.

    регуляркой то проверить любой дурак может

    Я начинал программирование с Perl, возможно поэтому я думаю иначе
    вероятно, стопудово транслятор перла на регулярках написан :-)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!