Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wanderson Moreira

Problema com Utf8

Recommended Posts

Olá

encontrei um script que exibe o titulo do meu conteúdo, porem se o titulo for maior q 29 caracteres ele imprime os 29 caracteres e mais 3 pontos (...)

esse código nao esta puxando a acentuação correta.. se eu exibir somente a $str ele puxa a acentuação certa

alguém pode ajudar?

$max = 29;
$str = $titulo;
echo substr_replace( $str, (strlen ($str) > $max ? '...' : ''), $max );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é o texto que está querendo exibir? Mostre um exemplo do problema

Acentos mesmo no começo da string aparecem com erro?

É possível que o substr_replace esteja cortando um caractere acentuado, como á. Dessa forma, o problema deveria ser apenas no último caractere acentuado, não na string toda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso esse substr_replace( $str, (strlen ($str) > $max ? '...' : ''), $max );

pra quando o texto for maior q 29 caracteres ele imprimir os 29 caracteres e dos 3 pontos..

se eu imprimir a $str ele me retorna o texto correto (que no caso seria Edição) porem ele não adiciona os 3 pontos caso for maior q 29 caracteres

entao uso esse script pra poder por os 3 pontos quando for maior q 29

ai ele retorna esse erro

3ª Ediç�...

já verifiquei o Utf do banco de dados e das paginas esta tudo correto, tanto é q o restante do conteúdo imprime com os caracteres certo..

fiz o teste desse mesmo texto imprimindo só o $str e funcionou normal..

então acredito q o erro esteja nessa parte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

veja se resolve :

function LimitarTexto($string, $tamanho, $encode = 'UTF-8') {
if( strlen($string) > $tamanho )
$string = mb_substr($string, 0, $tamanho - 3, $encode) . '...';
else
$string = mb_substr($string, 0, $tamanho, $encode);
return $string;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso esse substr_replace( $str, (strlen ($str) > $max ? '...' : ''), $max );

pra quando o texto for maior q 29 caracteres ele imprimir os 29 caracteres e dos 3 pontos..

Na verdade, eu pedi um exemplo da string usada.

Mas o problema é o que citei: a quebra ocorre em um caractere especial (normalmente tratado como dois caracteres no UTF-8), dividindo-o e gerando erro de codificação

Você pode resolver isso usando mb_substr(), que vai contar os caracteres em unicode

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.