Как восставить текст из каракулей на PHP

Форум для тех кто начинает осваивать язык php.
lyod
Сообщения: 76

Как восставить текст из каракулей на PHP

Сообщение lyod » Вт окт 21, 2014 4:34 pm

Здравствуйте. Хочу представить Вашему вниманию небольшой, но полезный в некоторых случаях скрипт. Может кому пригодится.

Немного предисловия.
Случаются такие ситуации, в которых при смене кодировки между windows-1251 и UTF-8 текст, написанный на кириллице, преобразуется примерно вот в такие каракули: "Проверочный".
Если Вы не сохранили резервную копию перед изменениями, последствия могут быть необратимы. Но не в нашем случае :) Немного поработав над этим вопросом, я составил вот такой массив:

Код: Выделить всё

array
(
    'Р°'=>'а', 'Р±'=>'б',
    'РІ'=>'в', 'Рі'=>'г',
    'Рґ'=>'д', 'Рµ'=>'е',
    'С‘'=>'ё', 'Р¶'=>'ж',
    'Р·'=>'з', 'Рё'=>'и',
    'Р№'=>'й', 'Рє'=>'к',
    'Р»'=>'л', 'Рј'=>'м',
    'РЅ'=>'н', 'Рѕ'=>'о',
    'Рї'=>'п', 'СЂ'=>'р',
    'СЃ'=>'с', 'С‚'=>'т',
    'Сѓ'=>'у', 'С„'=>'ф',
    'С…'=>'х', 'С†'=>'ц',
    'С‡'=>'ч', 'С€'=>'ш',
    'С‰'=>'щ', 'СЉ'=>'ъ',
    'С‹'=>'ы', 'СЊ'=>'ь',
    'СЌ'=>'э', 'СЋ'=>'ю',
    'СЏ'=>'я', 'Рђ'=>'А',
    'Р‘'=>'Б', 'Р’'=>'В',
    'Р“'=>'Г', 'Р”'=>'Д',
    'Р•'=>'Е', 'РЃ'=>'Ё',
    'Р–'=>'Ж', 'Р—'=>'З',
    'И'=>'И', 'Р™'=>'Й',
    'Рљ'=>'К', 'Р›'=>'Л',
    'Рњ'=>'М', 'Рќ'=>'Н',
    'Рћ'=>'О', 'Рџ'=>'П',
    'Р '=>'Р', 'РЎ'=>'С',
    'Рў'=>'Т', 'РЈ'=>'У',
    'Р¤'=>'Ф', 'РҐ'=>'Х',
    'Р¦'=>'Ц', 'Р§'=>'Ч',
    'РЁ'=>'Ш', 'Р©'=>'Щ',
    'РЄ'=>'Ъ', 'Р«'=>'Ы',
    'Р¬'=>'Ь', 'Р­'=>'Э',
    'Р®'=>'Ю', 'РЇ'=>'Я',
);

Использование его Вам поможет восстановить текст, который был преобразован в каракули. Например, у нас есть такие каракули: "Проверочный текст".
Преобразуем их с помощью нашего скрипта:

Код: Выделить всё

<?php
$replace = array
        (
            'Р°'=>'а', 'Р±'=>'б',
            'РІ'=>'в', 'Рі'=>'г',
            'Рґ'=>'д', 'Рµ'=>'е',
            'С‘'=>'ё', 'Р¶'=>'ж',
            'Р·'=>'з', 'Рё'=>'и',
            'Р№'=>'й', 'Рє'=>'к',
            'Р»'=>'л', 'Рј'=>'м',
            'РЅ'=>'н', 'Рѕ'=>'о',
            'Рї'=>'п', 'СЂ'=>'р',
            'СЃ'=>'с', 'С‚'=>'т',
            'Сѓ'=>'у', 'С„'=>'ф',
            'С…'=>'х', 'С†'=>'ц',
            'С‡'=>'ч', 'С€'=>'ш',
            'С‰'=>'щ', 'СЉ'=>'ъ',
            'С‹'=>'ы', 'СЊ'=>'ь',
            'СЌ'=>'э', 'СЋ'=>'ю',
            'СЏ'=>'я', 'Рђ'=>'А',
            'Р‘'=>'Б', 'Р’'=>'В',
            'Р“'=>'Г', 'Р”'=>'Д',
            'Р•'=>'Е', 'РЃ'=>'Ё',
            'Р–'=>'Ж', 'Р—'=>'З',
            'И'=>'И', 'Р™'=>'Й',
            'Рљ'=>'К', 'Р›'=>'Л',
            'Рњ'=>'М', 'Рќ'=>'Н',
            'Рћ'=>'О', 'Рџ'=>'П',
            'Р '=>'Р', 'РЎ'=>'С',
            'Рў'=>'Т', 'РЈ'=>'У',
            'Р¤'=>'Ф', 'РҐ'=>'Х',
            'Р¦'=>'Ц', 'Р§'=>'Ч',
            'РЁ'=>'Ш', 'Р©'=>'Щ',
            'РЄ'=>'Ъ', 'Р«'=>'Ы',
            'Р¬'=>'Ь', 'Р­'=>'Э',
            'Р®'=>'Ю', 'РЇ'=>'Я',
        );
   
   # Строка с каракулями
   $string = 'Проверочный текст';
   
   # Преобразуем и выводим на экран полученный результат
   echo strtr($string, $replace);

И получаем: "Проверочный текст". Важно: нужно сохранить файл, в котором этот скрипт в кодировке UTF-8 и всё сработает как надо.
Реклама

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость