fork(1) download
  1. <?php
  2.  
  3. function removeAcentos($string, $slug = false) {
  4. $string = strtolower($string);
  5.  
  6. // Código ASCII das vogais
  7. $ascii['a'] = range(224, 230);
  8. $ascii['e'] = range(232, 235);
  9. $ascii['i'] = range(236, 239);
  10. $ascii['o'] = array_merge(range(242, 246), array(240, 248));
  11. $ascii['u'] = range(249, 252);
  12.  
  13. // Código ASCII dos outros caracteres
  14. $ascii['b'] = array(223);
  15. $ascii['c'] = array(231);
  16. $ascii['d'] = array(208);
  17. $ascii['n'] = array(241);
  18. $ascii['y'] = array(253, 255);
  19.  
  20. foreach ($ascii as $key=>$item) {
  21. $acentos = '';
  22. foreach ($item AS $codigo) $acentos .= chr($codigo);
  23. $troca[$key] = '/['.$acentos.']/i';
  24. }
  25.  
  26. $string = preg_replace(array_values($troca), array_keys($troca), $string);
  27.  
  28. // Slug?
  29. if ($slug) {
  30. // Troca tudo que não for letra ou número por um caractere ($slug)
  31. $string = preg_replace('/[^a-z0-9]/i', $slug, $string);
  32. // Tira os caracteres ($slug) repetidos
  33. $string = preg_replace('/' . $slug . '{2,}/i', $slug, $string);
  34. $string = trim($string, $slug);
  35. }
  36.  
  37. return $string;
  38. }
  39.  
  40. echo removeAcentos ('Ação, Comédia, Ficção Cientifica', '-');
Success #stdin #stdout 0.03s 52480KB
stdin
Standard input is empty
stdout
a-o-com-dia-fic-o-cientifica