Dicas‎ > ‎PHP‎ > ‎

Função para remover caracteres especiais de uma string em PHP

Fonte:
http://blog.thiagobelem.net/removendo-acentos-de-uma-string-urls-amigaveis/
http://www.phpit.com.br/artigos/detectandodescobrindo-o-charsetcodificacao-de-uma-string-utf-8-iso-8859-1-etc.phpit


<?php
/***
 * Função para remover acentos de uma string
 *
 * @autor Thiago Belem <contato@thiagobelem.net>
 * Ajustes realizado por Silvio Garbes
 * Versão 2015-09-02
 */
// http://blog.thiagobelem.net/removendo-acentos-de-uma-string-urls-amigaveis/
function removeAcentos($string, $slug = false) {
  // http://www.phpit.com.br/artigos/detectandodescobrindo-o-charsetcodificacao-de-uma-string-utf-8-iso-8859-1-etc.phpit
  if(mb_detect_encoding($string.'x', 'UTF-8, ISO-8859-1') == 'UTF-8'){
    $string = utf8_decode(strtolower($string));
  }
  $string = strtolower($string);

  // verificar codigo ascii de string
  //for($i=0;$i<strlen($string);$i++){
  //  echo $string[$i]." ";
  //  echo ord($string[$i]);
  //  echo "\n";
  //}

  // Código ASCII das vogais
  $ascii['a'] = range(224, 230);
  $ascii['e'] = range(232, 235);
  $ascii['i'] = range(236, 239);
  $ascii['o'] = array_merge(range(242, 246), array(240, 248));
  $ascii['u'] = range(249, 252);

  // Código ASCII dos outros caracteres
  $ascii['b'] = array(223);
  $ascii['c'] = array(231,199);
  $ascii['d'] = array(208);
  $ascii['n'] = array(241);
  $ascii['y'] = array(253, 255);
  $ascii['ra'] = array(170);

  foreach ($ascii as $key=>$item) {
    $acentos = '';
    foreach ($item AS $codigo) $acentos .= chr($codigo);
    $troca[$key] = '/['.$acentos.']/i';
  }

  $string = preg_replace(array_values($troca), array_keys($troca), $string);

  // Slug?
  if ($slug) {
    // Troca tudo que não for letra ou número por um caractere ($slug)
    $string = preg_replace('/[^a-z0-9]/i', $slug, $string);
    // Tira os caracteres ($slug) repetidos
    $string = preg_replace('/' . $slug . '{2,}/i', $slug, $string);
    $string = trim($string, $slug);
  }

  return $string;
}


echo strtoupper(removeAcentos(' [Resolvido] » Problemas na conversão de página html'));

?>

Comments