Ir para conteúdo

POWERED BY:

Arquivado

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

.:D6:.

[Resolvido] Expressões Regulares duplicando

Recommended Posts

Bom Dia amigos,

 

Estou com uma dificuldade em Expressões regulares no PHP.

 

Tendo em mente que eu estava querendo fazer uma função (método) que tirasse os caracteres especiais de uma string, tais como os acentos, tentei fazer com ereg_replace.

 

//valor da string "á é í ó ú"
public static function StringtoURL($string){

ereg_replace("[á]","a",$string);

}

// saida "aa é í ó ú"

Não entendo porque ele repete o maldito caractere. ja tentei limitar pela ER colocando:

 

ereg_replace("[á]{1}","a",$string);

Sou novo na ER, não sei onde possa estar meu erro.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso esta:

function fazLink( $string )
{
	$string = trim($string);
	
	$string = preg_replace("/[áàâãª]/i","a",$string);
	$string = preg_replace("/[éèê]/i","e",$string);
	$string = preg_replace("/[íìî]/i","i",$string);
	$string = preg_replace("/[óòôõº]/i","o",$string);
	$string = preg_replace("/[úù]/i","u",$string);
	$string = preg_replace("/[ç]/i","c",$string);
	$string = preg_replace("/[\/.]/i","",$string);
	
	$string = str_replace("  ","-",$string);
	$string = strtolower($string);

	$string = preg_replace('/[^a-z0-9]/i', '-', $string);
	
	return $string;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colei o mesmo código que você postou e dá o mesmo erro. Só que notei que ele não duplica, e sim, acrescenta o "a" no começo.

 

$string = "á";

//output "aa"

 

$string = "é";

//output "ae"

 

$string = "í";

//output "ai"

 

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostra como você fez:

<?php
function fazLink( $string )
{
        $string = trim($string);
        
        $string = preg_replace("/[áàâãª]/i","a",$string);
        $string = preg_replace("/[éèê]/i","e",$string);
        $string = preg_replace("/[íìî]/i","i",$string);
        $string = preg_replace("/[óòôõº]/i","o",$string);
        $string = preg_replace("/[úù]/i","u",$string);
        $string = preg_replace("/[ç]/i","c",$string);
        $string = preg_replace("/[\/.]/i","",$string);
        
        $string = str_replace("  ","-",$string);
        $string = strtolower($string);

        $string = preg_replace('/[^a-z0-9]/i', '-', $string);
        
        return $string;
}

echo fazLink( 'á' ),'<br />';
echo fazLink( 'é' ),'<br />';
echo fazLink( 'í' );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade eu havia criado a variavel $string dentro da função mesmo...

Mas copiei dessa mesma forma que você colocou e da na mesma.

 

PS: só troquei as virgulas que você colocou sem querer pois não tava concatenando com os "br" rs...rs...

 

Usei o Debugue e quando chega na linha:

 

$string = preg_replace("/[áàâãª]/i","a",$string);

 

ele adiciona um "a" no começo.

 

Estranho pakas

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho cara, posta o teu script completo...

 

na verdade, o echo não precisa só concatenar, se você passar com vírgulas, é como se fossem 'vários parâmetros', assim a saída é mais rápida, pois chamadas à função nativa . são lentas.(segundo um livro de php que li na faculdade)

 

Executando apenas o trecho que postei, não tem como duplicar. Mostre exatamente como você fez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Podes crer, funciona mesmo com ",".

 

Mas meu arquivo .php está exatamente com o código que você postou. Não tem nenhuma linha de código adicional nem outra página chamando ela.

 

Apenas o que você postou MESMO.

 

Poderia ser um bug do meu apache? (Unica mudança que fiz foi retirar o Multiviews)

Ja testei tanto via brownser quanto via debug do Zend Studio.

 

Ja to desencanado, vou ver se faço um cadastro em uma hospedagem free pra testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu hein?!

 

Qual a versão do php ?

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.