Snickersmix
@Snickersmix
Web-разработчик

Как изменить часть текста в другой кодировке на php?

Есть некоторый текст с немного поехавшей кодировкой. Часть строки в utf-8, другая в windows-1251.

Собственно вопрос, как выровнять кодировку всего текста в utf-8?

Решение:
function mbe_detect_encoding($string, $enc = null)
{

    static $list = array('utf-8', 'windows-1251');

    foreach ($list as $item) {
        $sample = @iconv($item, $item, $string);
        if (md5($sample) == md5($string)) {
            if ($enc == $item) {
                return true;
            } else {
                return $item;
            }
        }
    }
    return null;
}

$text = preg_split('!([ ,<>="\':])!ism', $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
foreach ($text as $key => $c) {
    if (mbe_detect_encoding($c) == 'windows-1251')
        $text[$key] = iconv('WINDOWS-1251', 'utf-8', $c);
}
$text = implode('', $text);
  • Вопрос задан
  • 3008 просмотров
Решения вопроса 1
AloneCoder
@AloneCoder
[object Object]
Можете разбить текст на слова и воспользоваться iconv(mb_detect_encoding($str),'UTF-8',$str) для каждого слова
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Разрезать на 2 части, сконвертировать ту часть что в win1251 в utf-8
iconv('CP1251','UTF-8',$str)
склеить строки обратно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы