Как преобразовать символы UTF8 в числовые символы в PHP - PullRequest
13 голосов
/ 30 сентября 2011

Возможен ли вообще перевод приведенного ниже кода с использованием PHP?

Код ниже написан на JavaScript. Он возвращает HTML с ссылками на числовые символы, где это необходимо. Ex. smslån -> smslån

Мне не удалось создать перевод. Этот скрипт выглядит так, как будто он может работать, но возвращает å для & aring; вместо å, как это делает приведенный ниже JavaScript .

function toEntity() {
  var aa = document.form.utf.value;
  var bb = '';
  for(i=0; i<aa.length; i++)
  {
    if(aa.charCodeAt(i)>127)
    {
      bb += '&#' + aa.charCodeAt(i) + ';';
    }
    else
    {
      bb += aa.charAt(i);
    }
  }
  document.form.entity.value = bb;
}

Функция PHP ord * звучит так же, как и charCodeAt , но это не так. Я получаю 195 для å с использованием ord и 229 с использованием charCodeAt. Это или у меня возникли невероятно сложные проблемы с кодированием.

1 Ответ

33 голосов
/ 30 сентября 2011

Использование mb_encode_numericentity:

$convmap = array(0x80, 0xffff, 0, 0xffff);
echo mb_encode_numericentity($utf8Str, $convmap, 'UTF-8');
...