Ir para conteúdo

POWERED BY:

Arquivado

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

Ualace Moura

[Resolvido] Como retirar o sinal %20 das url geradas

Recommended Posts

Olá gente boa noite. Minha dúvida é a seguinte.

 

eu uso o seguinte trecho para gerar o link

 

<a href='desc_e.php?id=$usuario->id $usuario->titulo'>

 

sendo que; id=$usuario->id é que chama o conteudo do banco atraves do id cadastrado.

e $usuario->titulo é para mostrar o titulo da notícia quando o url aparecer na barra de endereço.

 

Até ai tudo funciona perfeitamente. O problema é que quando a URL é exibida ana barra de ENDEREÇO de qualquer navegador é mostrado esse sinal %20 devido ao espaço entre as palavras e também devido aos acentos.

 

Vejam:

 

http://www.spcomunicacao.com.br/aindahojecom/desc_e.php?id=63%20Cr%E9dito%20para%20ve%EDculos%20deve%20subir%2010%%20em%202012

 

os sinais em negrito seriam espaços e acentos.

Observei em vário sites e blog que as urls deles não aparecem acentos e no lugar do espaço aparecem Hífens " - "

 

Ex: G1.globo.com

 

URL gerada:

http://g1.globo.com/sao-paulo/carnaval/2012/noticia/2012/02/irmas-minerato-iniciam-pintura-para-desfile-da-gavioes-da-fiel.html

 

Obseve que não tem acentos e no lugar dos espaços aparecem traços " - "

 

Então como faço a minha url ficar assim também.

 

Desde já agradeço a ajuda de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$string = 'Crédito para veículos deve subir 10% em 2012';

echo preg_replace( array( '/[`^~\'"]/', '/([\s])/' ), array( null, '-' ), iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) );

 

Saída:

Credito-para-veiculos-deve-subir-10%-em-2012

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou sem Expressão Regular que acaba sendo mais rápido, mesmo que um tiquinho de nada.

 

Porém, essa função encontrada no Manual, não dá conta dos espaços em branco. Você pode fazer uma micro-adaptação nela, incluindo, no final do array $table:

 

' ' => '-'

Assim os espaços viram hífens furante a "normalização".

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$string = 'Crédito para veículos deve subir 10% em 2012';

echo preg_replace( array( '/[`^~\'"]/', '/([\s])/' ), array( null, '-' ), iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) );

 

Saída:

Credito-para-veiculos-deve-subir-10%-em-2012

 

Cara Muito obrigado pela sua ajuda. A expressão funciona, mas só consegui da maneira que colocou ai. Não consegui fazela funcionar no link. Poderia me exclarecer melhor.

 

Meu código.

 

<?php
// Seleciona todos os usuários
$conn = @mysql_connect("host", "usuario", "senha") or die ("Problemas na conexão.");
$db = @mysql_select_db("banco", $conn) or die ("Problemas na conexão");
$sql = mysql_query("SELECT * FROM coluna_esquerda_1 ORDER BY id DESC LIMIT 15");
while ($usuario = mysql_fetch_object($sql)) { 

$string = '$usuario->titulo';

echo preg_replace( array( '/[`^~\'"]/', '/([\s])/' ), array( null, '-' ), iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) );


	echo "<table cellpadding=5>";
	echo "<tr>";
	echo "<td>";
	echo "<font face='calibri' size='2' color='#666666'><b>$usuario->categoria</b></font></br>";
	echo "<a href='desc_e.php?id=$usuario->id $usuario->titulo'><font face='calibri' size='4' color='#ba0000'><b>$usuario->titulo</b></font></a>";
	echo "</td>";
	echo "</tr>";
	echo "</table>";

	echo "<table cellpadding=5>";
	echo "<tr>";
	echo "<td>";
	echo "<div id='fotos'>";
	echo "<div id='borde-interior2'>";
	echo "<a href='desc_e.php?id=$usuario->id $usuario->titulo'>";
if($usuario->foto == NULL)
   	{
   	echo "<img src='http://spcomunicacao.com.br/aindahojecom/images/padrao.jpg' width='140' height='100' border='0' alt='img'/>";	
   	}
   	else
   	{
   	echo "<img src='http://www.spcomunicacao.com.br/aindahojecom/system/fotos/".$usuario->foto."' width='140' height='100' border='0' alt='img'/>";	
   	}
	echo "</div>";
	echo "</td>";

	echo "<td>";
	echo "<font face='calibri' color='#666666'>$usuario->subtitulo</font>";
	echo "</td>";

	echo "</table>";



}
?>

 

Tentei desta maneira mas não deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$string = preg_replace( array( '/[`^~\'"]/', '/([\s])/' ), array( null, '-' ), iconv( 'UTF-8', 'ASCII//TRANSLIT', $usuario->titulo ) );

 

No lugar de echo $usuario->titulo coloque echo $string

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$string = preg_replace( array( '/[`^~\'"]/', '/([\s])/' ), array( null, '-' ), iconv( 'UTF-8', 'ASCII//TRANSLIT', $usuario->titulo ) );

 

No lugar de echo $usuario->titulo coloque echo $string

 

Cara funcionou do jeito que você falou. mas veio outro problema.

Quando o texto possui estes acentos ( ` , ´ , ^, ç, ~) ele corta e não continua a mostrar a frase.

 

Ex: Governo investirá 4 mi em projetos de ressocialização

 

Por caus do acento só aparece assim.

 

Ex: Governo investir

 

Acredito que tenha que fazer com que o código anule os acentos, fiz algumas pesquisas mas não encontrei nada. você poderia me dar mais essa ajuda. Fico grato pela atenção. Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei como você está fazendo, pois aqui funciona corretamente.

 

Resolvido.

 

Encontrei uma função parecida que tem o mesmo efeito porém escrito de outra maneira.

 

$string = $usuario->titulo;

 

$string = preg_replace("[^a-zA-Z0-9_]", "", strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC-"));

 

Fiz desta forma e funcionou certinho.

Valeu pela atenção e ajuda de todos. Obrigado. Tá ai o código para quem precisar

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.