Criando um Slug a partir de uma String com JavaScript e Expressão Regular
Sem dúvida a geração de URLs Amigáveis (para os íntimos Slugs) pode se tornar uma árdua tarefa, justamente porque aqui no Brasil, onde temos uma língua de origem no latina, assim como outros países que possuem caracteres com acentos, letras diferentonas e algumas outras particularidades podemos facilmente estragar (literalmente) aquelas funções bonitas que vemos em desenvolvedores americanos-ingleses, etc…
Foi justamente por conta desse problema que precisei adaptar e dar um fork no GitHub neste código (que foi muito bem feito pelo Mathew) para tratar caracteres especiais.
E é exatamente com esta pequena função que eu tomei vergonha na cara e estreei (sim apenas no fim de 2017) no aclamado GitHub. Para quem quiser me seguir, meu user é gabrielfroes.
Fiz algumas adaptações, mas a principal foi a de tratar os caracteres especiais (incluindo aí as acentuações), mas também a de utilizar a função através do prototype String. Dessa forma temos uma função mais estilosa e mais prática.
Segue o código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/* Create SLUG from a string This function rewrite the string prototype and also replace latin and other special characters. Forked by Gabriel Fróes - https://gist.github.com/gabrielfroes Original Author: Mathew Byrne - https://gist.github.com/mathewbyrne/1280286 */ if (!String.prototype.slugify) { String.prototype.slugify = function () { return this.toString().toLowerCase() .replace(/[àÀáÁâÂãäÄÅåª]+/g, 'a') // Special Characters #1 .replace(/[èÈéÉêÊëË]+/g, 'e') // Special Characters #2 .replace(/[ìÌíÍîÎïÏ]+/g, 'i') // Special Characters #3 .replace(/[òÒóÓôÔõÕöÖº]+/g, 'o') // Special Characters #4 .replace(/[ùÙúÚûÛüÜ]+/g, 'u') // Special Characters #5 .replace(/[ýÝÿŸ]+/g, 'y') // Special Characters #6 .replace(/[ñÑ]+/g, 'n') // Special Characters #7 .replace(/[çÇ]+/g, 'c') // Special Characters #8 .replace(/[ß]+/g, 'ss') // Special Characters #9 .replace(/[Ææ]+/g, 'ae') // Special Characters #10 .replace(/[Øøœ]+/g, 'oe') // Special Characters #11 .replace(/[%]+/g, 'pct') // Special Characters #12 .replace(/\s+/g, '-') // Replace spaces with - .replace(/[^\w\-]+/g, '') // Remove all non-word chars .replace(/\-\-+/g, '-') // Replace multiple - with single - .replace(/^-+/, '') // Trim - from start of text .replace(/-+$/, ''); // Trim - from end of text }; } |
No GitHub você encontrará no endereço: https://gist.github.com/gabrielfroes/e90a53f96ed71fb201d133395003ada4
Um exemplo muito simples de utilização seria:
1 2 |
var frase = "O site Código Fonte é o melhor da tecnologia de [a-Z]."; var url = frase.slugify(); |
É isso, espero que essa função seja útil para vocês!
Você pode se interessar

Como cortar texto sem usar uma linha de script
Carlos L. A. da Silva - 11 de janeiro de 2021Conheça o poder da propriedade text-overflow no CSS e nunca mais edite strings no braço.

Como começar a programar
Carlos L. A. da Silva - 7 de janeiro de 2021Então, você quer entrar nessa vida? A decisão é sua, mas nós podemos te ajudar com os primeiros passos.

Como cancelar qualquer conta online para sempre
Carlos L. A. da Silva - 30 de dezembro de 2020Que tal fazer uma limpeza nas suas contas inativas ou finalmente largar aquela rede social que só dá desgosto?
One Response
Deixe um Comentário
Mais publicações




Valeu pela função. Muito útil!