Giihh 6 Denunciar post Postado Agosto 18, 2015 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
Giihh 6 Denunciar post Postado Agosto 18, 2015 if($slug) { echo $slug; } esse trecho é só um exemplo Compartilhar este post Link para o post Compartilhar em outros sites
demonio 3 Denunciar post Postado Agosto 18, 2015 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
Giihh 6 Denunciar post Postado Agosto 19, 2015 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
Giihh 6 Denunciar post Postado Agosto 20, 2015 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
Giihh 6 Denunciar post Postado Agosto 20, 2015 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
Giihh 6 Denunciar post Postado Agosto 21, 2015 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