这个问题看起来很简单,但我找不到答案.
什么是PHP相当于以下C#代码行?
string str = "\u1000";
Run Code Online (Sandbox Code Playgroud)
此示例创建一个带有单个Unicode字符的字符串,其"Unicode数值"为十六进制的1000(十进制为4096).
也就是说,在PHP中,如何创建一个具有单个Unicode字符的字符串,其"Unicode数值"是已知的?
可能重复:
如何获取utf-8字符串中给定字符的代码点编号?
我在javascript中有一个示例代码:
var str = "HELLO WORLD";
var n = str.charCodeAt(0);
Run Code Online (Sandbox Code Playgroud)
这返回72
如何在PHP中完成此操作?
我在JS中有一个简单的代码,如果涉及特殊字符,我无法在PHP中复制.
这是JS代码(请参阅JSFiddle输出):
var str = "t??"; //char "t" and special characters, emojis, etc..
document.write("Length is: "+str.length); // Length is: 19
for(var i=0; i<str.length; i++) {
document.write("<br> charCodeAt(" + i + "): " + str.charCodeAt(i));
}
Run Code Online (Sandbox Code Playgroud)
第一个问题是PHP strlen()并且mb_strlen()已经给出了JS的不同结果(strlen:39,mb_strlen:11),但是我设法使用自定义JS_StringLength函数(由于这个 SO答案).
这是我到目前为止在PHP中的内容(请参阅phpFiddle输出):
<?php
function JS_StringLength($string) {
return strlen(iconv('UTF-8', 'UTF-16LE', $string)) / 2;
}
function JS_charCodeAt($str, $index){
//not working!
$char = mb_substr($str, $index, 1, 'UTF-8');
if (mb_check_encoding($char, 'UTF-8'))
{
$ret = mb_convert_encoding($char, …Run Code Online (Sandbox Code Playgroud)