Ir para conteúdo

POWERED BY:

Arquivado

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

Giihh

Return - Slug

Recommended Posts

Olá,

 

Estou usando o seguinte código para criar slugs

   if(!empty($campo)){
  $slug = $campo;
	// replace non letter or digits by -
  $slug = preg_replace('~[^\\pL\d]+~u', '-', $slug);

  // trim
  $slug = trim($slug, '-');

  // transliterate
  $slug = iconv('utf-8', 'us-ascii//TRANSLIT', $slug);

  // lowercase
  $slug = strtolower($slug);

  // remove unwanted characters
  $slug = preg_replace('~[^-\w]+~', '', $slug);

  return $slug;

}

Com um echo $slug; antes do return, esta tudo funcionando ok. depois do return por padrão é o final da função e não executa mais nada (aprendi hoje). Mas eu preciso dentro de outro if pegar o valor da variavel $slug

  if(!empty($campo)){
  $slug = $campo;
	// replace non letter or digits by -
  $slug = preg_replace('~[^\\pL\d]+~u', '-', $slug);

  // trim
  $slug = trim($slug, '-');

  // transliterate
  $slug = iconv('utf-8', 'us-ascii//TRANSLIT', $slug);

  // lowercase
  $slug = strtolower($slug);

  // remove unwanted characters
  $slug = preg_replace('~[^-\w]+~', '', $slug);

  return $slug;

	if($slug)
	{
		echo $slug;
	}

}


Minha dúvida: como pegar o valor desta variavel depois do return?

 

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites
	if($slug)
	{
		echo $slug;
	}

esse trecho é só um exemplo

 

function slug($texto, $echo = false){

    $slug = preg_replace('~[^\\pL\d]+~u', '-', $texto);
    $slug = trim($slug, '-');
    $slug = iconv('utf-8', 'us-ascii//TRANSLIT', $slug);
    $slug = strtolower($slug);
    $slug = preg_replace('~[^-\w]+~', '', $slug);   
    
    if($echo == true){
        echo $slug;
    }else{
        return $slug;
    }
}
//Uso
slug("Aqui vai meu texto");//aqui a função vai retornar o valor para uso em inclusões ou comparações
slug("Aqui vai meu texto", true);//aqui printa o resultado com 'echo' da propria função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja o que estou tentando fazer:

public function teste($slug)
	{
		  $slug = preg_replace('~[^\\pL\d]+~u', '-', $slug);
		  $slug = trim($slug, '-');
		  $slug = iconv('utf-8', 'us-ascii//TRANSLIT', $slug);
		  $slug = strtolower($slug);
		  $slug = preg_replace('~[^-\w]+~', '', $slug);

	          return $slug;

	try
		{
			
			$stmt = $this->db->prepare("INSERT INTO minha_tabela(o_slug) VALUES(:o_slug))");
		
			$stmt->bindparam(":o_slug",$slug );			
			$stmt->execute();
			return true;
			
		}
		catch(PDOException $e)
		{
			echo $e->getMessage();	
			return false;
		}
		
	}

É isso que quero antes de ir para o try, transformar o que veio na váriavel $slug, pra depois salvar no DB com o formato de um slug mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou tento criar uma function criaslug(). Mas como eu chamo uma função dentro de outra função? tipo assim:

public function criaslug($slug)
    {
         $slug = preg_replace('~[^\\pL\d]+~u', '-', $slug);
         $slug = trim($slug, '-');
         $slug = iconv('utf-8', 'us-ascii//TRANSLIT', $slug);
         $slug = strtolower($slug);
         $slug = preg_replace('~[^-\w]+~', '', $slug);

     return $slug;

}



public function teste($slug)
    {

       //como chamar aqui a função criaslug? Antes de ir para o bloco try

    try
        {
            
            $stmt = $this->db->prepare("INSERT INTO minha_tabela(o_slug) VALUES(:o_slug))");
        
            $stmt->bindparam(":o_slug",$slug );            
            $stmt->execute();
            return true;
            
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();    
            return false;
        }
        
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei com $slug = $this->criaslug($slug);

 

Mas ainda dá erro. O return da função criarslug($slug) tem efeito para não executar mais nada na function teste($slug) antes de iniciar o bloco try?

public function criaslug($slug)
    {
         $slug = preg_replace('~[^\\pL\d]+~u', '-', $slug);
         $slug = trim($slug, '-');
         $slug = iconv('utf-8', 'us-ascii//TRANSLIT', $slug);
         $slug = strtolower($slug);
         $slug = preg_replace('~[^-\w]+~', '', $slug);

     return $slug;

}



public function teste($slug)
    {

        $slug = $this->criaslug($slug);

    try
        {
            
            $stmt = $this->db->prepare("INSERT INTO minha_tabela(o_slug) VALUES(:o_slug))");
        
            $stmt->bindparam(":o_slug",$slug );            
            $stmt->execute();
            return true;
            
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();    
            return false;
        }
        
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionando só tinha um parenteses a mais

$stmt = $this->db->prepare("INSERT INTO minha_tabela(o_slug) VALUES(:o_slug)");

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.