воскресенье, 4 мая 2008 г.

PHP перекодируем текст из HTML-последовательностей и наоборот

Думаю многие из вас в теле HTML страницы встречали вместо привычного русского текста набор символов и цифр, так вот - это HTML последовательности. Иногда перед разработчиками стоит задача или закодировать текст в такую последовательность, или наоборот раскодировать,вот для этого вам и пригодится следующая функция, $to_uni = false - из HTML последовательности в нормальный текст, $to_uni = true - наоборот.

  1. <?php
  2. function unicon($str, $to_uni = false) {
  3.     $cp = Array (
  4.         "А" => "&#x410;", "а" => "&#x430;",
  5.         "Б" => "&#x411;", "б" => "&#x431;",
  6.         "В" => "&#x412;", "в" => "&#x432;",
  7.         "Г" => "&#x413;", "г" => "&#x433;",
  8.         "Д" => "&#x414;", "д" => "&#x434;",
  9.         "Е" => "&#x415;", "е" => "&#x435;",
  10.         "Ё" => "&#x401;", "ё" => "&#x451;",
  11.         "Ж" => "&#x416;", "ж" => "&#x436;",
  12.         "З" => "&#x417;", "з" => "&#x437;",
  13.         "И" => "&#x418;", "и" => "&#x438;",
  14.         "Й" => "&#x419;", "й" => "&#x439;",
  15.         "К" => "&#x41A;", "к" => "&#x43A;",
  16.         "Л" => "&#x41B;", "л" => "&#x43B;",
  17.         "М" => "&#x41C;", "м" => "&#x43C;",
  18.         "Н" => "&#x41D;", "н" => "&#x43D;",
  19.         "О" => "&#x41E;", "о" => "&#x43E;",
  20.         "П" => "&#x41F;", "п" => "&#x43F;",
  21.         "Р" => "&#x420;", "р" => "&#x440;",
  22.         "С" => "&#x421;", "с" => "&#x441;",
  23.         "Т" => "&#x422;", "т" => "&#x442;",
  24.         "У" => "&#x423;", "у" => "&#x443;",
  25.         "Ф" => "&#x424;", "ф" => "&#x444;",
  26.         "Х" => "&#x425;", "х" => "&#x445;",
  27.         "Ц" => "&#x426;", "ц" => "&#x446;",
  28.         "Ч" => "&#x427;", "ч" => "&#x447;",
  29.         "Ш" => "&#x428;", "ш" => "&#x448;",
  30.         "Щ" => "&#x429;", "щ" => "&#x449;",
  31.         "Ъ" => "&#x42A;", "ъ" => "&#x44A;",
  32.         "Ы" => "&#x42B;", "ы" => "&#x44B;",
  33.         "Ь" => "&#x42C;", "ь" => "&#x44C;",
  34.         "Э" => "&#x42D;", "э" => "&#x44D;",
  35.         "Ю" => "&#x42E;", "ю" => "&#x44E;",
  36.         "Я" => "&#x42F;", "я" => "&#x44F;"
  37.     );
  38.     if ($to_uni) {
  39.         $str = strtr($str, $cp);
  40.     } else {
  41.         foreach ($cp as $c) {
  42.             $cpp[$c] = array_search($c, $cp);
  43.         }
  44.         $str = strtr($str, $cpp);
  45.     }
  46.     return $str;
  47. }
  48.  echo unicon('&#x41C;&#x43E;&#x441;&#x43A;&#x432;&#x430; &#x422;&#x432;&#x435;&#x440;&#x441;&#x43A;&#x430;&#x44F; 7'); //выводим расшифрованую запись в браузер
  49. ?>

А вот ещё нашёл онлайн тулзу для такого рода преобразований http://wwwguru.net/sandbox/index.php

Здесь можно оставить свои комментарии.

Комментариев нет: