Remover acentos e demais caracteres especiais - Transformar linha em urls

4,319 views
Skip to first unread message

nelson o mesmo

unread,
Jan 21, 2011, 7:00:11 AM1/21/11
to nelso...@hotmail.com
Bom dia, estou tendo dificuldade em manusear um arquivo, o mesmo possui diversas linha, gostaria de transformar cada linha em url amigavel.

O arquivo abaixo retornou a pagina em branco, conforme anexo.

http://pastebin.com/Nv20LXBM

Aryel Tupinambá

unread,
Jan 21, 2011, 7:19:57 AM1/21/11
to php-...@googlegroups.com, nelso...@hotmail.com
Você pode utilizar o iconv() para transliterar os caracteres especiais em ASCII:


iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', "Coração");
Retorna: Coracao

Mas o problema não é esse. O fopen() não retorna o conteúdo de uma string, e sim um ponteiro para você trabalhar com file streams.
A função que você procura é a file_get_contents().

Um abraço,

Aryel Tupinambá
Diretor de Desenvolvimento
Zint Intelligent Solutions
http://www.zint.com.br
Mob.: (11) 7647-6374 / (11) 7362-1000
Tel.: (11) 5096-0703


2011/1/21 nelson o mesmo <nelsonph...@gmail.com>
Bom dia, estou tendo dificuldade em manusear um arquivo, o mesmo possui diversas linha, gostaria de transformar cada linha em url amigavel.

O arquivo abaixo retornou a pagina em branco, conforme anexo.

http://pastebin.com/Nv20LXBM

nelson o mesmo

unread,
Jan 21, 2011, 7:41:15 AM1/21/11
to php-...@googlegroups.com

Olá, Aryel, os caracteres estão retornando com sinal de exclamação
<?php
$casa = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', "Coração");
echo $casa;
// Cora??o
?>

Aryel Tupinambá

unread,
Jan 21, 2011, 7:49:37 AM1/21/11
to php-...@googlegroups.com
Tente trocar UTF-8 por ISO-8859-1.

Reparei também naquela sua página que você define a função mas não a executa.

Ricardo Bermejo

unread,
Jan 21, 2011, 7:52:30 AM1/21/11
to php-...@googlegroups.com
Eu uso uma função assim:

function url_amigavel($string) {
    $palavra = strtr($string, "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
    $palavranova = str_replace("_", " ", $palavra);
    $pattern = '|[^a-zA-Z0-9\-]|';    $palavranova = preg_replace($pattern, ' ', $palavranova);
    $string = str_replace(' ', '-', $palavranova);
    $string = str_replace('---', '-', $string);
    $string = str_replace('--', '-', $string);
    return strtolower($string);
}

Uso:

$casa =
url_amigavel('Coração');
Retorna: coracao

Abraço,
Ricardo Bermejo.
Ricardo Bermejo
"A única vitória digna de ser contada é aquela em que outros também venceram" @ledark

nelson o mesmo

unread,
Jan 21, 2011, 7:53:29 AM1/21/11
to php-...@googlegroups.com

Veja o erro
Cora????o //iso-8859-1
Cora??o //utf-8

<?php
echo iconv('iso-8859-1', 'ASCII//TRANSLIT//IGNORE', "Coração");
echo $ca . "<br />";;


$casa = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', "Coração");
echo $ca;
?>

nelson o mesmo

unread,
Jan 21, 2011, 8:01:31 AM1/21/11
to php-...@googlegroups.com

Ricardo, esta retornando com erro, veja
coray-y-o

Bruno S. Drago

unread,
Jan 21, 2011, 8:45:01 AM1/21/11
to php-...@googlegroups.com

> $pattern = '|[^a-zA-Z0-9\-]|'; $palavranova =

Nao necessariamente a ver como problema, ate pq nao olhei o codigo para ver
onde essa expressão regular entra, mas vc sabe que iso ai em cima nao
contempla acentos, né?

use:

[:upper:][:lower:] ao inves de a-zA-Z

Referencia:
http://guia-er.sourceforge.net/lista.html#2_1_2

Abs,
Bruno

Reply all
Reply to author
Forward
0 new messages