Funções MultiByte, acentuação no PHP para todos.
Tentando converter dados de um formulário HTML em upper case para gravar em um banco MYSQL,
passei horas de muito aperto lidando strtoupper.
Com pesar descobri que os caracteres acentuados permaneciam da mesma forma, e assim conseguia algo do tipo:
transformação -> TRANSFORMAçãO (note o 'çã' minúsculo)
Procurando, cheguei à informação de que era necessário ajustar o local com a função setlocale().
Outro tempo gasto, muitos testes e nada.
Por fim encontrei as Funções MultiByte, que consideram os caracteres acentuados em vários idiomas.
Dessa forma, podemos simplesmente escrever:
<?php
$letras= 'á é í ó ú ç ã õ â ê ô ü à è ò';
echo mb_strtoupper($letras,'utf-8');
?>
Resultado: Á É Í Ó Ú Ç Ã Õ Â Ê Ô Ü À È Ò
Estas funções diferem pelo sufixo mb_ no nome. Existe equivalente para muitas funções que trabalham com
strings.
Por exemplo:
mb_strlen — Comprimento da string
mb_strpos — Acha a POSIÇÃO da primeira ocorrência de uma string em outra
mb_strrpos — Acha a posição da ultima ocorrência de uma string em outra
mb_strstr — Acha a primeira OCORRÊNCIA de uma string em outra
mb_strtolower — transforma uma string em minúsculas
mb_strtoupper — Transforma em maiúsculas
mb_substr — Pega uma parte da string
mb_substr_count — Conta o numero de ocorrências de uma substring em uma string
Para uma lista mais abrangente olhe em Multibyte String Functions
Então atéa próxima.