Ir para conteúdo

POWERED BY:

Arquivado

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

dasilvaj4

Função para utilizar urls amigáveis

Recommended Posts

Olá para todos!
Bom eu achei este código na internet e queria saber o que está de errado nele

<?php
function GenerateUrl ($s) {
  $from = explode (',', "ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u,(,),[,],'");
  $to = explode (',', 'c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u,,,,,,');
  $s = preg_replace ('~[^wd]+~', '-', str_replace ($from, $to, trim ($s)));
  return strtolower (preg_replace ('/^-/', '', preg_replace ('/-$/', '', $s)));
}
$url = array ('title'=>'Todos os Posts', 'id'=>100);
echo '<a href="/blog/' . GenerateUrl ($url['title']) . '/' . $url['id'] . '">';
echo $url['title'] . '</a>' . PHP_EOL . '<br>';


Era para retornar /blog/todos-os-posts/100
mas esta retornando /blog/d/100

Alguém sabe qual é o problema?
Desde já obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for este teu caso de uso você pode simplesmente fazer isso:

function generateUrl($url) {

    /**
     * Dentro do array você bota todos os caracteres que não deseja na url como espaços e underlines
     */

    return strtolower(str_replace(array(' ', '_'), '-', $url));
}

echo generateUrl('/blog/Todos os Posts/100');

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for este teu caso de uso você pode simplesmente fazer isso:

function generateUrl($url) {    /**     * Dentro do array você bota todos os caracteres que não deseja na url como espaços e underlines     */    return strtolower(str_replace(array(' ', '_'), '-', $url));}echo generateUrl('/blog/Todos os Posts/100');

Este script não vai remover os acentos, preciso disso :/

 

 

Alguém me ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

$title = "Meu título com o sem acento, graças a esta função abaixo.";

function slug($text)
{

    // replace non letter or digits by -
    $text = preg_replace('~[^\\pL\d]+~u', '-', $text);

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

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

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

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

    if (empty($text)) {
        return false;
    }

    return $text;
}


echo slug ($title) ;

Saida:

 

 

meu-titulo-com-o-sem-acento-gracas-a-esta-funcao-abaixo

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.