如何在PHP中创建JavaScript转义序列?

如何在PHP中创建JavaScript转义序列?,php,unicode,Php,Unicode,我正在寻找一种从PHP中创建有效UTF-16 JavaScript转义序列字符(包括代理项对)的方法 我使用下面的代码获取UTF-32代码点(来自UTF-8编码字符)。这可以用作JavaScript转义字符(例如,“\u00E1”表示“á”)——直到进入代理项对的上限(例如,使用iconv(或类似的mb\u convert\u编码)如何 例如: $utf16= iconv('UTF-8', 'UTF-16LE', $text); $codeunits= array(); for ($i= 0;

我正在寻找一种从PHP中创建有效UTF-16 JavaScript转义序列字符(包括代理项对)的方法


我使用下面的代码获取UTF-32代码点(来自UTF-8编码字符)。这可以用作JavaScript转义字符(例如,“\u00E1”表示“á”)——直到进入代理项对的上限(例如,使用
iconv
(或类似的
mb\u convert\u编码
)如何

例如:

$utf16= iconv('UTF-8', 'UTF-16LE', $text);
$codeunits= array();
for ($i= 0; $i<strlen($utf16); $i+= 2) {
    $codeunits[]= ord($utf16{$i})+ord($utf16{$i+1})<<8;
}
$utf16=iconv('UTF-8','UTF-16LE',$text);
$codeunits=array();

对于($i=0;$i),这里是使用的最终代码(基于bobince的答案):

$output='';
$utf16=iconv(fxCHARSET,'UTF-16BE',$text);
对于($i=0;$i$output.='\\u'.str_-pad(dechex($ord($character{$i})太棒了。非常感谢。根据你的回答,我使用的是($utf16=iconv)(fxCHARSET,'UTF-16BE',$text);for($i=0;$i$output = '';
$utf16 = iconv(fxCHARSET, 'UTF-16BE', $text);
for ($i= 0; $i < strlen($utf16); $i+= 2)
{
    $output.= '\\u'.str_pad(dechex((ord($character{$i}) << 8) + ord($character{$i+1})), 4, '0', STR_PAD_LEFT);
}