为什么utf8字符看起来像问号?

时间:2019-02-14 19:16:48

标签: php

我的网站上有一个表格。我正在审核ui面板上的表单值。如果单词长度大于12,则函数会执行此操作,它会在其旁边放置一个空格。但是,当我打印该值时,如果值是utf8,则会出错。

$text= 'üğqwoweğofkeiasş övafevpğeüqrg qğekqrğofteölzfs';

function parser($str, $parse) {
    $strlength = strlen($str);
    $counter = 0;
    $query = '';

    if($strlength > $parse) {
        for($i = 0; $i < $strlength; $i++) {
            if($str[$i] != ' ') {
                $counter++;
            }

            if($counter == $parse) {
                $query.=$str[$i];   
                $query.=' ';
                $counter = 0;
            } 

            if($counter != $parse) {
                $query.=$str[$i];
            }

            if($counter != $parse & $str[$i] == ' ') {
                $counter = 0;   
            } 
        }

        return $query;
    }
    else {
        return $str;    
    }
}

echo parser($text,12);

输出为:

'üğqwoweğo ofkeiasş övafevpğe� üqrg qğekqrğoft teölzfs'

有时并非总是如此。我不明白为什么会这样。

1 个答案:

答案 0 :(得分:1)

代码:

function parser($string, $max_length = 12)
{
    $chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);


    $i = 0;

    foreach ($chars as $index => $char)
    {
             if ($char === ' ') { $i = 0; }
        else                    { $i++;   }

        if ($i >= $max_length)
        {
            $chars[$index] = $char . ' ';

            $i = 0;
        }
    }

    return implode('', $chars);
}

$result = parser('üğqwoweğofkeiasş övafevpğeüqrg qğekqrğofteölzfs');

结果:üğqwoweğofke iasş övafevpğeüqr g qğekqrğofteö lzfsuser