Eai pessoal!
Gostaria de tratar um texto/palavra dessa maneira: Transformar em minúsculo, remover acentuações (trocar pelo caracter correspondente - minúsculo e maiúsculo) e espaços em branco por -(hífen) ou +(mais)
Alguém tem ou pode indicar um artigo/tutorial sobre alguma expreção regular que faça isso?
Encontrei algumas funções que fazem isso mas os caracteres em maiúsculo com acento não são tratados...
Agradeço!
<?php
/**
* Verifica se uma string é UTF-8
* @param string $string A string que será verificada
* @return boolean
*/
function is_utf8( $string ){
return preg_match( '%^(?:
[\x09\x0A\x0D\x20-\x7E]
| [\xC2-\xDF][\x80-\xBF]
| \xE0[\xA0-\xBF][\x80-\xBF]
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| \xF0[\x90-\xBF][\x80-\xBF]{2}
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
)*$%xs',
$string
);
}
/**
* Remove os acentos de uma string
* @param string $string
* @return string
*/
function removeAccents( $string ){
return preg_replace(
array(
//Maiúsculos
'/\xc3[\x80-\x85]/',
'/\xc3\x87/',
'/\xc3[\x88-\x8b]/',
'/\xc3[\x8c-\x8f]/',
'/\xc3([\x92-\x96]|\x98)/',
'/\xc3[\x99-\x9c]/',
//Minúsculos
'/\xc3[\xa0-\xa5]/',
'/\xc3\xa7/',
'/\xc3[\xa8-\xab]/',
'/\xc3[\xac-\xaf]/',
'/\xc3([\xb2-\xb6]|\xb8)/',
'/\xc3[\xb9-\xbc]/',
),
str_split( 'ACEIOUaceiou' , 1 ),
is_utf8( $string ) ? $string : utf8_encode( $string )
);
}
Esses caras ai em cima vão verificar a codificação da string e remover todos os acentos dela, feito isso é converter para caixa baixa e trocar espaços por hifens...
echo strtolower( preg_replace( '/\s+/' , '-' , removeAccents( 'João Batista Neto' ) ) );
Saída: