Há quem diga que desenvolvimento é uma arte e exige muita pesquisa para conseguir dominá-la, eu atualmente estou longe deste feito mas estou me esforçando para melhorar meus conhecimentos.
Recentemente precisei fazer um projeto e escolhi utilizar o Zend Framework por ter um bom acervo de bibliotecas de funções que eu precisaria utilizar. Num dado momento
senti a necessidade de converter caracteres especiais (ç, é, á, à) para os caracteres similares da tabela ascii para criar uma URL amigável para a aplicação.
Procurei em vários blogs e apenas encontrei pequenos scripts que faziam um mapa de caracteres próprio para em seguida fazer a conversão. Particularmente não gosto da ideia de ter que fazer uma mapa de caracter próprio então desenvolvi um plugin chamado “Zag_Filter_CharConvert” cuja repositório está localizado no github (https://github.com/agutoli/CharConvert) e que faz o trabalho sujo pra você como veremos abaixo.
– Antes de mais nada temos que baixar o pacote https://github.com/agutoli/CharConvert/tags e descompactá-lo dentro do diretório library na mesma raiz de Zend.
Removendo os caracteres especiais
/** dependencies **/
require 'Zend/Loader/Autoloader.php';
require 'Zag/Filter/CharConvert.php';
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
$filter = new Zag_Filter_CharConvert();
echo $filter->filter('éééé ááááá 90');//eeee aaaaa 90
Passando os parâmetros como array
/** dependencies **/
require 'Zend/Loader/Autoloader.php';
require 'Zag/Filter/CharConvert.php';
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
$filter = new Zag_Filter_CharConvert(array(
'replaceWhiteSpace' => '-',
'locale' => 'en_US',
'charset'=> 'UTF-8'
));
echo $filter->filter('ééé ááá 90');//eee-aaa-90
echo $filter->filter('óóó 10aáééé');//ooo-10aaeee
Passando os parâmetros de configuração como argumentos
/** dependencies **/
require 'Zend/Loader/Autoloader.php';
require 'Zag/Filter/CharConvert.php';
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
$filter = new Zag_Filter_CharConvert('UTF-8', 'en_US', '-');
echo $filter->filter('éééé ááááá 90');//eeee-aaaaa-90
Bem, acredito que este plugin ainda precise de ajustes, se alguém testar e encontrar algum problema peço que me avise.
Abraço!