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

    +1

    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
    /**
     * Метод проверяет и правит корректность символов кодировки
     * @param іекштп $str Проверяемая строка
     * @param string $charset Кодировка строки
     * @return string
     */
    public function fixCharset($str, $charset = 'utf-8'){
        $return = '';
        // Проверяем строку на корректность, если нет, дробим на два и проверяем первую часть,
        // и т.д. проверяем первую часть от части, пока не найдём корректную или не останется 1 символ
        // который отбрасываем
        while(($len = strlen($str)) > 0){
            while(($iconv = @iconv($charset,
                    (strtolower($charset) == "utf-8" ? "cp1251" : "utf-8"),
                    substr($str,0,$len))) === false){
    
                if($len == 1){
                    break;
                }
                $len = ceil($len / 2);
            }
    
            if($iconv){
                $return .= substr($str,0,$len);
            }
            $str = substr($str,$len);
        }
    
        return $return;
    }

    Человек знал про iconv //IGNORE и все равно такое сотворил.

    Запостил: Ant, 25 Ноября 2015

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

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