- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 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 и все равно такое сотворил.
gost 25.11.2015 17:34 # +3
Ant 25.11.2015 17:37 # 0
someone 26.11.2015 11:00 # 0
roman-kashitsyn 26.11.2015 11:01 # +6
Lure Of Chaos 26.11.2015 21:37 # +1
guest 27.11.2015 03:16 # +1