Classe StringToSlug Versão PHP Server Side

A Classe StringToSlug transforma qualquer String em formato Slug. Transformando os caracteres em letras minúsculas, fazendo uma troca/replace de caracteres com acentuação em caracteres não acentuados. E transformando espaços em hífens.

Link para o GitHub

Migrado para o GitHub em 28/07/2010 por Samir Braga
StringToSlug PHP

Existem diversos algoritmos que transformam String em Slugs(permalinks). Mas à maioria com expressões regulares e que retiram qualquer caractere acentuado na língua Portuguesa. Funcionam muito bem no idioma Inglês, mas não resolve para o nosso idioma(Português do Brasil).


Foi por isso que o Samir Braga criou uma Classe com um algoritmo semelhante à do jQuery Plugin StringToSlug feita em PHP.
O Samir à chamou de Permalink. Mas como percebi que na Web o termo SLUG é bem conhecido e utilizado. Deixo com este nome para facilitar quem procura este algoritmo.

Para quem não sabe o que é um SLUG. É simplesmente uma string transformada em letras minúsculas e sem acentuação. Assim transformamos títulos de artigos em URL amigáveis. Melhorando usabilidade e SEO.

Caso tenham alguma dúvida/crítica/sugestão deixem nos comentários que farei o possível para responder. Ou outros usuários podem ajudar nas respostas.

Os exemplos de como utilizar a classe StringToSlug estão no link:

http://github.com/samir/StringToSlug/blob/master/example.php

14 ideias sobre “Classe StringToSlug Versão PHP Server Side

  1. Valeu por postar o código! Se alguém estiver interessado em uma versão em C#, segue aqui:

    public static string GenerateSlug(string texto) {
    byte[] bytes = System.Text.Encoding.GetEncoding(“Cyrillic”).GetBytes(texto);
    string str = System.Text.Encoding.ASCII.GetString(bytes).ToLower();

    // Remove os caracteres invalido
    str = Regex.Replace(str, @”[^a-z0-9\s-]”, “”);
    // Remove espacos indevidos para apenas um
    str = Regex.Replace(str, @”\s+”, ” “).Trim();
    // Limita o tamanho do slung para 45 caracteres
    str = str.Substring(0, str.Length <= 45 ? str.Length : 45).Trim();
    // Troca os espacos por hifen
    str = Regex.Replace(str, @"\s", "-");

    return str;
    }

  2. Obrigado Leo pela divulgação dessa classe =)

    Essa é uma classe super simples que visava resolver um problema igualmente simples =)

    Como faz um bom tempo q ela foi feita, e motivado pela divulgação q vc fez, dei uma melhorada nela, implementei umas opcões (mas que não deve afetar quem já a usa, caso atualize) e coloquei comentários em inglês pois coloquei ela no GitHub.

    Creio que manter lá será mais fácil pra gente centralizar melhorias que poderão vir, facilitar a colaboração e variações caso alguém queria implementar de outra forma, ou se basear nela para outra finalidade…

    http://github.com/samir/StringToSlug

    É isso aí!

    Abraços,

  3. Fala Léo,

    Muito boa a classe no entanto a um erro de Strict Standards, erro "Strict Standards: Non-static method StringToSlug::stripSpecialChars() should not be called statically in path/paraclasse.php on line 25", isso ocorre porque está tentando acessar o stripSpecialChars() com conotação de método estático utilizando self::stripSpecialChars() isso só funcionaria se o stripSpecialChars() fosse declarado como estático.

    Criei alguns testes para classe em[1], no entanto a mais que podem ser criados. Aconselho também a leitura de um post sobre como as slugs do WP são criadas[2].

    [1] – http://pastebin.com/thDvtQj0
    [2] – http://desenvolvimentoparaweb.com/php/urls-amigav

  4. Pingback: jQuery Plugin stringToSlug | Leo Caseiro

Deixe uma resposta