【问题标题】:PHP display weird characters for utf8 charactersPHP显示utf8字符的奇怪字符
【发布时间】:2014-11-04 21:32:47
【问题描述】:

我使用以下方式从我的数据库中收到内容:

$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] => �
......................

我在这里做错了什么?如何解决这个问题?

你可以看看这个sandbox demo

【问题讨论】:

  • 问题是您使用str_x 函数处理 utf-8 文本,其中 1 个字符不等于数组中的 1 个字符,因此您需要使用 mb_x 系列函数。

标签: php wordpress utf-8


【解决方案1】:
// 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>";

Sandbox Demo.

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 2013-10-29
    • 2014-10-17
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    相关资源
    最近更新 更多