Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jnejunior

[Resolvido] função para criar slug

Recommended Posts

tenho esta função aqui:

 

function slug( $string ) {
       if (is_string($string)) {
               $string = strtolower(trim(utf8_decode($string)));

               $before = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿRr';
               $after  = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr';           
               $string = strtr($string, utf8_decode($before), $after);

               $replace = array(
                       '/[^a-z0-9.-]/'	=> '-',
               		'/-+/'			=> '-',
                       '/\-{2,}/'		=> ''
               );
               $string = preg_replace(array_keys($replace), array_values($replace), $string);
       }
       return $string;
}

 

ela esta funcionando belezinha, achei aqui no fórum mesmo, ela tira os acentos, e palavras compostas ela adiciona traços para separar, eu quero usá-la para criar slugs, o que falta que não consegui adaptar foi o seguinte...

 

tenho um campo de tags no meu formulário, e as tags são separadas por vírgula, e esta função, quando lê uma frase assim: frase composta, frase composta

retorna: frase-compostafrase-composta

e eu queria que fosse assim: frase-composta, frase-composta

 

deve ser algo bem pequeno, mas não manjo de RE's

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma aqui na corrida :upset:

 

Ficou bizarro, necessita de mais testes, mas deve funcionar. :rolleyes:

<?php

function slug( $string )
{
   return preg_replace( array( '/([`^~\'"])/', '/([-]{2,}|[-+]+|[\s]+)/', '/(,-)/' ), array( null, '-', ', ' ), iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) );
}

echo 
slug( 'frase composta, frase composta' ), 
'<br/>', 
slug( 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿRr' );

 

Saída

frase-composta, frase-composta
AAAAAAAECEEEEIIIIDNOOOOOOUUUUYThssaaaaaaaeceeeeiiiidnoooooouuuyythyRr

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu certinho mestre, muito obrigado... isso porque foi na correria hein, kkk

 

deu certinho mestre, muito obrigado... isso porque foi na correria hein, kkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.