如何在PHP中将UTF8字符转换为数字字符实体


How to convert UTF8 characters to numeric character entities in PHP

是否可以使用PHP翻译下面的代码?

下面的代码是用JavaScript编写的。它在需要的地方返回带有数字字符引用的html。例 smslån -> smslån

我没有成功地创建一个翻译。这个脚本看起来可以工作,但是对于å返回 å ,而不是像下面的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的word函数听起来和charCodeAt的功能是一样的,但实际上不是。我得到195使用ord和229使用charCodeAt的。或者我遇到了一些难以置信的编码问题

使用mb_encode_numericentity:

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