.:D6:. 0 Denunciar post Postado Janeiro 28, 2010 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
William Bruno 1501 Denunciar post Postado Janeiro 28, 2010 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
.:D6:. 0 Denunciar post Postado Janeiro 28, 2010 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
William Bruno 1501 Denunciar post Postado Janeiro 28, 2010 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
.:D6:. 0 Denunciar post Postado Janeiro 28, 2010 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
William Bruno 1501 Denunciar post Postado Janeiro 28, 2010 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
.:D6:. 0 Denunciar post Postado Janeiro 28, 2010 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
.:D6:. 0 Denunciar post Postado Janeiro 28, 2010 Pedi para um amigo hospedar esse mesmo código que você postou William. Olha o resultado: http://www.hardinspire.com/archives/adilson/php/faz_link.php Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 28, 2010 eu hein?! Qual a versão do php ? Compartilhar este post Link para o post Compartilhar em outros sites
.:D6:. 0 Denunciar post Postado Janeiro 28, 2010 PHP Version 5.2.10-2 Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 28, 2010 o resultado pode mudar de acordo com o charset, http://www.andersonferminiano.com/faz_link.php iso-8859-1 a e i utf-8 aa ae ai us-ascii aaaaaa aaaeea aaaeaa Compartilhar este post Link para o post Compartilhar em outros sites
.:D6:. 0 Denunciar post Postado Janeiro 29, 2010 Podes crer. Valeu era isso mesmo! Compartilhar este post Link para o post Compartilhar em outros sites