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

dar*_*tch 13 javascript php translation utf-8 char

是否可以使用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;
}
Run Code Online (Sandbox Code Playgroud)

PHP的ord函数听起来像charCodeAt一样,但事实并非如此.我得到195å使用ord和229使用charCodeAt.那,或者我有一些难以置信的编码问题.

phi*_*hag 33

用途mb_encode_numericentity:

$convmap = array(0x80, 0xffff, 0, 0xffff);
echo mb_encode_numericentity($utf8Str, $convmap, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

  • @darkAsPitch很乱.`$ convmap`指定要编码的字符.它应该是一个回调函数,但这可能会很慢,并且php中回调的使用仍然在函数之前.前两个数字指定要转换的字符代码的范围(包括),第三个和第四个和偏移量以及位掩码(0和0xfff用于所有实际目的).例如,如果要将所有字符转换为HTML实体,请指定`array(0,0xfff,0,0xfff)`.基本上,`(0x80,0xffff,..)`相当于你的问题中的`charCode> 127`. (7认同)
  • 唯一令我担心的是$ convmap - 究竟是什么?手册页上没有很好的解释.我是否必须输入所有可能的转换或其他内容?我虚弱的头脑将其视为"转换图". (3认同)