Pergunta

Estou cortando string unicode com diacríticos usando mb_substr função, mas funciona como eu usaria simples substr função. Ele divide os caracteres Unicode ao meio exibindo diamante marcado com perguntas.

Por exemplo

echo mb_substr('ááááá', 0, 5); //Displays áá�

O que pode estar errado?

Foi útil?

Solução

Eu tenho o mesmo problema se não especificar a codificação como o último parâmetro para mb_substr : ele padrão, pelo menos no meu servidor, para ISO-8859-1.


Mas, se eu definir a codificação corretamente, para UTF-8, funciona bem:

echo mb_substr('ááááá', 0, 5, 'UTF-8');

Obtém a tela certa no navegador:

ááááá


Ver mb_substr (citando, ênfase meu) :

string mb_substr  ( string $str  , int $start  [, 
    int $length  [, string $encoding  ]] )

o encoding Parâmetro é a codificação do caractere. Se for omitido, o valor interno de codificação de caráter será usado.

Outras dicas

Eu tive o mesmo problema e as respostas acima me ajudaram. Ao lado da configuração php.ini ou usando ini_set(), também pode ajudar a usar mb_internal_encoding('utf-8'); (utf-8 pode ser substituído por sua escolha) para definir a codificação permanente para funções multibyte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top