Remover caracteres, símbolos e números de uma URL
Olá a todos,
Sou novíssimo aqui no fórum como usuário, mas já venho acompanhando o trabalho a tempo.
Tenho uma aplicação que trabalha com Woocommerce e o gateway Pagar.Me pelo Wordpress, e em um dos módulos, recebe os parâmetros de uma URL.
Me deparei com um problema que não achei soluções neste e em outros fóruns.
No caso de um valor que contivesse espaços e/ou acentos, como substituiria para uma string comum (somente com os caracteres alfabéticos)?
Uma URL não aceita certos caracteres e o substitui automaticamente por outros caracteres especiais. Tendo essa premissa, criei uma função para resolver o problema:
function concerta_URL($string){
$string = str_replace(array("%C3%A7", "%C3%87", "%C3%A3", "%C3%83", "%C3%A1", "%C3%81", "%C3%A0", "%C3%80", "%C3%A2", "%C3%82", "%C3%A4", "%C3%84",
"%C3%A9","%C3%89","%C3%A8", "%C3%88", "%C3%AA", "%C3%8A", "%C3%AB", "%C3%8B", "%C3%AB", "%C3%8B", "%C3%AD", "%C3%8D", "%C3%AC", "%C3%8C", "%C3%AE", "%C3%8E", "%C3%AF", "%C3%8F",
"%C3%B3", "%C3%93", "%C3%B2", "%C3%92", "%C3%B6", "%C3%96", "%C3%B5", "%C3%95", "%C3%B3", "%C3%93", "%C3%B2", "%C3%92", "%C3%B4", "%C3%94", "%C3%B6", "%C3%96",
"%C3%BA", "%C3%9A", "%C3%B9", "%C3%99", "%C3%BB", "%C3%9B", "%C3%BC", "%C3%9C"),
array("c", "C", "a", "A", "a", "A", "a", "A", "a", "A", "a", "A", "e", "E", "e", "E", "e", "E", "e", "E", "i", "I", "i", "I", "i", "I", "i", "I", "o", "O", "o", "O",
"o", "O", "o", "O", "o", "O", "u", "U", "u", "U", "u", "U", "u", "U"), $string);
$string = trim(strtolower($string));
$a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýýþÿŔŕ?';
$b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuuyybyRr-';
$string = strtr($string, utf8_decode($a), $b);
$string = str_replace(".","-",$string);
$string = str_replace(array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'), '', $string);
$string = preg_replace( "/[^0-9a-zA-Z\.]+/",' ',$string);
return utf8_decode(rtrim($string, "-"));
}
A mesma retorna uma string low(caixa baixa) sem os caracteres, símbolos e números que podem eventualmente, serem inseridos.
A função foi feita de um modo bem deselegante, mas não consegui faze-la utilizando a função php preg_replace, pois ela não aceita um filtro maior que 10 caracteres.
Se alguém souber de um modo melhor de fazer, seria muito legal compartilhar.
No mais espero ajudar quem tiver deparado com o mesmo problema.
Até.Discussão (5)
Carregando comentários...