通过PHP函数输出unicode显示unicode符号

通过PHP函数输出unicode显示unicode符号,php,html,unicode,Php,Html,Unicode,我试图将字符的unicode作为PHP函数的返回类型输出,但实际上,当我调用该函数时,它只输出不带“0x”而不是符号的代码。但是,如果我在HTML中显式地声明unicode,它会很好地输出符号。下面是我的代码的简化版本。为什么会这样 在显示表格的PHP文件中: <td><?php echo verifyMatch($a,$b) ?></td> 就PHP而言,您的值0x2714和0x2718只是十六进制数,它们分别存储为2714和2718。实际上,PHP应该将

我试图将字符的unicode作为PHP函数的返回类型输出,但实际上,当我调用该函数时,它只输出不带“0x”而不是符号的代码。但是,如果我在HTML中显式地声明unicode,它会很好地输出符号。下面是我的代码的简化版本。为什么会这样

在显示表格的PHP文件中:

<td><?php echo verifyMatch($a,$b) ?></td>

就PHP而言,您的值
0x2714
0x2718
只是十六进制数,它们分别存储为
2714
2718
。实际上,PHP应该将它们转换为十进制值。当输出到HTML中时,它们只作为数字输出

如果要以HTML格式输出它们并显示实际符号,请尝试使用
&#x
预挂起它们,并在它们后面附加一个

<td><?php echo '&#x' . verifyMatch($a, $b) . ';'; ?></td>

如果要将它们转换为十进制值,您可以在它们前面加上
&
而不是
&&x
。添加的
x
用于十六进制值。

参考:

<td><?php echo '&#x' . verifyMatch($a, $b) . ';'; ?></td>
function replace_unicode_escape_sequence($match) {
    return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
function unicode_chr ($chr) {
    $str = "\u".end(explode("+", $chr));
    return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $str);
}

function verifyMatch($_a,$_b){
    $_output = null;
    if (checkCondition()){
       $_output = unicode_chr("U+2714");   // unicode for tick
    }
    else {
        $_output = unicode_chr("U+2718");   // unicode for cross
    }
    return $_output;
}