1. PHP / Говнокод #7548

    +170

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    // convert ',' to '.'
    public static function ConvertDecimal($num) {
    	$num = preg_replace('/,/i', '.', $num);
    	//check if is number after convertion
    	if (is_numeric($num))
    		return $num;
    	return false;
    }

    у автора было суровое детство

    Запостил: cephuo, 15 Августа 2011

    Комментарии (53) RSS

    • плюсую не только за регулярки, а за проверку, не превратилось ли оно вдруг в число?
      Ответить
      • а еще "case insensitive": большая/маленькая запятая
        Ответить
      • > не превратилось ли оно вдруг в число
        локаль же
        у обезьянки числа маленькие, дальше тысячный сепаратор притаился
        Ответить
      • так именно то проверка на число и есть главная часть этой функции.

        я приблизительно такое дело делал в одной математической проге для одной полупроводниковой фирмы из Германии у который почти все клиенты седят в штатах: в Германии (и большинство Европы) в числах с плавающей точкой используется запятая - в штатах (и куча еще стран) точка. на локаль правильно выставленую полагатся тоже не приходится. поэтому народ в прогах хардкодит любимый разделитель, и в вводимых числах точку/запятую заменяют на этот самый разделитель.

        это не говно а просто конвертация ввода пользователя.

        один раз погеморитесь с '.' vs. ',' сами поймете к чему это...
        Ответить
        • > один раз погеморитесь с '.' vs. ',' сами поймете к чему это...
          заслуженное говно чтоли?
          заставь кодобезьян локаль поддерживать, они и всё концепцию изговнякают...
          Ответить
          • думал ИЕ везде успел
            Ответить
          • > заставь кодобезьян локаль поддерживать, они и всё концепцию изговнякают...

            куда здесь в жопу локаль? это обработка ввода пользователя. посади американца на немецкий компьютер (или немца за американский комп) и понаслаждайса трех этажной матерщиной по поводу что говняный софт отказывается числа вводить/вводит числа неправильно.
            Ответить
            • Кстати да - я сам всегда ввожу через точку несмотря на всякие там русские локали.
              Ответить
            • у вас LOCALE_SDECIMAL

              если софт не жопой писан - числа будут введены и выведены в привычном юзеру виде
              Ответить
              • ту уже научил софт читать мысли человека и автоматом вычислять чем он пользуется - точкой или запятой???

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

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

                вперед и с песней все грабли обходить.
                Ответить
                • > надо вводить числа с точкой
                  пусть как и положено, ставит предпочитаемую локаль и вводит, не надо ему на уши ссать про несчастных полуграмотных аборигенов с контрабандными писюками, система позволяет хоть "xуй\0" использовать как разделитель

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

                  > кучи библиотек кэшируют
                  выкинуть или поправить, нотификация для этого есть

                  > почасавая
                  стоит ли спорить?
                  Ответить
                  • почасав, индуссу.
                    Ответить
                  • > стоит ли спорить?

                    правильно, не стоит. все уже догадались что в данной тематике вы имеете ноль конкретного опыта. не говоря уже о том что бы понять проблему которую решает код выше.
                    Ответить
                    • > что в данной тематике вы имеете ноль конкретного опыта
                      вы правы, никогда не писал подобную хуйню, хотя на заре и искривлял дефолтную локаль ради своей говнософтины.

                      > не говоря уже о том что бы понять проблему
                      лол, илитненько.
                      разочарую, обезьянка думает, что сделала открытие, а на самом деле просто пачкает клавиатуру, не разобравшись к концепции.
                      Ответить
            • Сам так матерюсь, когда электронная таблица при вводе или импорте неожиданно преобразовывает числа в даты.
              Ответить
              • да да. это еще один пример этой самой херни с локалями.
                Ответить
          • а разве пых оглядывается на локаль? числа всегда через точку...
            Ответить
            • Это литералы в коде. А речь про строки, в которых записаны числа:
              '10.5'
              '10,5'
              Вопрос: как узнать, какой разделитель предпочитает пользователь?
              Ответить
              • пусть пишет через точку. а через запятую это два числа
                Ответить
              • Обычно зависит от страны пользователя.
                А еще ему можно дать возможность выбрать эту конфигурацию в настройках
                Ответить
                • Эта самая настройка и есть локаль, она распространяется на всю систему (хотя можно заоверрайдить конфиги локали для отдельной программы, а ещё браузер может отправлять серверу данные о локали, не являющейся текущей). Системной локалью можно сконфигурить предпочитаемый язык, кодировку, представление чисел, дат, порядок сортировки строк и т.д.
                  Проблема в том, что большинство юзеров знать не знают о локалях. А вот программистам знать об этом нужно.
                  Ответить
                  • Это я и имел ввиду.
                    Объяснять применение локали думаю было лишним.
                    http://www.google.com/search?q=php+locale
                    Ответить
        • Какой-то бред, если честно
          Ответить
          • Мишки Дамми не умеют формулировать мысли.
            Ответить
          • что не так?


            Человек написал функцию `isTsyfra` с поддержкой ваще любого разделителя
            Ответить
            • ну, во-первых, не понял, почему нельзя полагаться на правильно выставленную локаль

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

              с другой стороны, откуда в Германии хорошие программисты
              Ответить
      • Лурик, я не число.
        Ответить
        • Потом испытуемому говорят, что он число
          Ответить
    • да, автору на ночь не рассказывали сказки о локалях.
      Ответить
    • По моему не только сказки... ему вообще ничего не рассказывали )
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий