Caracteres com acentuação não mudam com strrev e problema similar ao usar editor de texto.

caracteres diferentes não funcionam no meu php
Um problema que tive, não apenas ao tentar reverter frases, foi com caracteres acentuados que não eram revertidos no formato utf8. Estava a tentar mudar o host de um site, para uma hospedagem mais barata 😂⁧, e tive um problema, pensei tratar-se da versão PHP ou configurações do servidor, mas não, um dos problemas foi abrir o aquivo e salvá-lo, por algum motivo era salvo numa codificação ANSI ou Unicode e não UTF-8, fazia o upload e, ao acessar a página web os caracteres acentuados e o 'ç' apareciam com problema ou, no caso de um filtro que usei estes não eram filtrados. Resolvi salvando o arquivo na codificação UTF8 - fica a dica para quem usa criar/editar em coisas como 'bloco de notas' ou documento de texto(que para php, html... tem que ser algum que não aplica formatações ou estilos) - e transferindo novamente.
Outro caso, que eu nunca havia usado com letras acentuadas, é o 'strrev', e este dá problema, não deu mensagem de erro, mas deu merd...:

<?php
echo strrev("Olá mundo!"); //mostrou "!odnum �lO" ao invés de "!odnum álO"
?>


Um tipo de 'gambiarra' para corrigir o que parece um bug ao inverter(de trás para frente) uma frase ou texto com acentuação:

<?php
function utf8_inversor($str){
preg_match_all('/./us', $str, $ar);
return join('',array_reverse($ar[0]));
}

$Reverso=utf8_inversor("Olá mundo!");

echo $Reverso; //mostra "!odnum álO"
?>



Fonte: http://php.net/manual/pt_BR/function.strrev.php

Sem comentários:

Enviar um comentário