jel

wat


Создание игр за еду

Бить людей за плохое знание C++ — это нормально.


Предыдущий пост Поделиться Следующий пост
URL 2 Rus
jel
wat
Ой, я тут в порыве написал функцию перегона урла с кодами русских букв в сами буквы. Велосипед жеж? Плохой?

Колбасня «%D0%9A%D1%80%D1%8B%D0%BC» переводится в «Крым».


function Util_URL2Rus($str)
{
  $retStr = '';
  $len = strlen($str);

  for($pos = 0; $pos<$len; $pos++)
  {
    if($str[$pos] == '%')
    {
      $code = hexdec(substr($str, $pos+1, 2));
      $isLet = false;
      if(($code==0xD0 || $code==0xD1) && $str[$pos+3] == '%')
      {
        $isLet = true;
        $c = $code*256 + hexdec(substr($str, $pos+4, 2));
        if(53200+ord('А')<=$c && $c<=53200+ord('п'))
          $retStr .= chr($c-53200);
        elseif(53392+ord('р')<=$c and $c<=53392+ord('я'))
          $retStr .= chr($c-53392);
        elseif(53649==$c)
          $retStr .= 'ё';
        elseif(53377==$c)
          $retStr .= 'Ё';
        else
          $isLet = false;
      }
      if(!$isLet)
      {
        if($code==0x20)
          $retStr .= ' ';
        elseif($code==0xB8)
          $retStr .= 'ё';
        elseif($code==0xA8)
          $retStr .= 'Ё';
        elseif(ord('А')<=$code && $code<=ord('я'))
          $retStr .= chr($code);
        else
          $retStr .= substr($str, $pos, 3);
      }
      else
        $pos += 3;
      $pos += 2;
    }
    else 
      $retStr .= $str[$pos];
  }
  return $retStr;
}

Метки:

  • 1
в суть магических констант не вник (
а как у нее с юникодом дела?

Эта функция для слова Крым выдаёт такую какашку: 'Крым'

У меня нормально работает, отдало в UTF-8.

На той же странице, линк на которую я дал, ниже:

iconv('utf-8', 'cp1251', urldecode($text))

Да, так работает. Спасибо! :) А я пробовал раньше локально, у меня, оказывается, модуль не был подключён , блин :)

  • 1
?

Log in

No account? Create an account