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

    +6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    function utf8ToCp1251($s,$type="w") {
        if ((is_string($s) && strlen($s)>0) && ((mb_detect_encoding($s,'UTF-8,CP1251')) == "UTF-8"))    { 
            $out="";
            for ($c=0;$c<strlen($s);$c++)         { 
                $i=ord($s[$c]); 
                if ($i<=127) @$out.=$s[$c]; 
                if (@$byte2)     { 
                    $new_c2=($c1&3)*64+($i&63); 
                    $new_c1=($c1>>2)&5; 
                    $new_i=$new_c1*256+$new_c2; 
                    if ($new_i==1025) { 
                        $out_i=168; 
                    } else { 
                        if ($new_i==1105) { 
                            $out_i=184;
                        } else { 
                        $out_i=$new_i-848; 
                        } 
                    } 
                    @$out.=chr($out_i); 
                    $byte2=false; 
                } 
                
                if (($i>>5)==6)  { 
                  $c1=$i; 
                  $byte2=true; 
                } 
            } 
            return $out; 
        } 
        else return $s; 
    }

    Одна из стандартных функций битрикса.
    Видимо iconv им не знаком...

    Запостил: tanur, 17 Марта 2016

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

    • У iconv три параметра, а тут - один (параметр $type не нужен совсем). Легко запомнить, код короче. 1С кого попало в разработчики не берет... ;)
      Ответить
    • Особенно доставил костыль про $i>>5
      Код битрикса настолько суров, что обфускация только улучшает его читаемость!
      Ответить
    • Когда я искал работу крестовиком-лошарой, мне позвонили оттуда и предложили поработать с битриксом.
      Вот прямо сейчас я понял, какой жести избежал благодаря заблаговременной теор. подготовке на гк.
      Ответить
      • > крестовиком
        > битрикс
        WTF?
        Ответить
        • Со стороны работодателя это выглядело так:

          Ну пожалуйста! Ну хоть кто-нибудь!
          Ответить
        • Битрикс → 1С. В 1C и в C++ есть буква C. Всё логично
          Ответить
          • я тоже путаю 1C, C и csh

            Кстати, а кто тут писал на tcsh?:) есть пожилые БЗДуны в треде?
            Ответить
      • А я тоже когда искал работу программистом в юности мне как-то предложили поработать уборщиком

        но я отказался
        Ответить
    • все просто
      символ пхп -- квадратноколёсный велосипед
      Ответить
    • 1с говно
      Ответить

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