PHP为utf8字符显示奇怪的字符


PHP display weird characters for utf8 characters

我使用从数据库接收内容

$strip_title = html_entity_decode(strip_tags($title),ENT_QUOTES,'UTF-8');

echo:之后用这个字符串正确显示

[MV HD] Nợ Ai Đó Cả Thế Giới – Phạm Quỳnh Anh

但是当我使用str_split函数将上面的字符串显示为字符数组时:

$result = str_split($title);
echo "<pre>";
print_r($result);
echo "</pre>";

然后结果看起来像这样:

Array
(
    [0] => [
    [1] => M
    [2] => V
    [3] =>  
    [4] => H
    [5] => D
    [6] => ]
    [7] =>  
    [8] => N
    [9] => �
    [10] => �
    [11] => �
......................

我在这里做错了什么?如何更正此问题?

您可以看看这个沙箱演示

// this function is get from http://php.net/manual/en/function.str-split.php
function str_split_unicode($str, $l = 0) {
    if ($l > 0) {
        $ret = array();
        $len = mb_strlen($str, "UTF-8");
        for ($i = 0; $i < $len; $i += $l) {
            $ret[] = mb_substr($str, $i, $l, "UTF-8");
        }
        return $ret;
    }
    return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
}
$title = "[MV HD] Nợ Ai Đó Cả Thế Giới - Phạm Quỳnh Anh";
$result = str_split_unicode($title);
echo "<pre>";
print_r($result);
echo "</pre>";

沙盒演示