Ir para conteúdo

POWERED BY:

Arquivado

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

MuitoCurioso

[Resolvido] Remover acentos e caracteres especiais de título

Recommended Posts

Amigos,

 

O script abaixo inclui _ no lugar de espaços nos títulos de modo correto.

Mas gera um erro, que não consigo resolver: as letras acentuadas e com cedilha

não são substituídas por letras sem acento e sem cendilha, mas por _

 

Por exemplo: Líbia fica L_bia, canção fica can__o.

 

Alguém pode me ajudar?

 

exibir_noticias.php?id=$id&titulo=".$nome = ereg_replace("[^a-zA-Z0-9_]","_", strtr($nome, 
"áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ","aaaaeeiooouucAAAAEEIOOOUUC_"))."

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá MuitoCurioso,

 

tente desta forma:

 

$characteres = array(
   'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A',
   'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I',
   'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U',
   'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a',
   'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i',
   'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u',
   'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f', ' '=> '_'
);
exibir_noticias.php?id=$id&titulo=".$nome = strtr($nome, $characteres);

 

encontrei esta solução no http://br2.php.net/manual/pt_BR/function.strtr.php

 

boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer remover os acentos só para passar via URL?

 

Neste caso você pode usar a função urlencode.

 

$url = 'exibir_noticias.php?id=' . $id . '&titulo=' . urlencode( $nome );

 

Na página que irá receber o título você usa a função urldecode. ;)

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Tenho uma funcao pronta pra isso, a uso nas minhas url de loja virtual pro SEO (Search Engine Optimization):

 

Function Texto_SEO($Texto = '', $Espacos = '_')
{
$RT                = $Texto;
$RT                = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT                = $Espacos != False ? str_replace(' ', $Espacos, $RT) : $RT;
$RT                = strtolower($RT);

Return $RT;
}

 

Espero que ajude! Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma sujestão para a função do InterPlanet seria utilizar preg_replace, pois acho que ficaria mais legível

Veja:

str_replace(' ', $Espacos, $RT) // como está
echo Texto_SEO('bla bla bla  bla        bla'); // bla_bla_bla__bla________bla

preg_replace('/[\s]{1,}/', $Espacos, $RT)// modificada
echo Texto_SEO('bla bla bla  bla        bla'); // bla_bla_bla_bla_bla

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde pode estar?

 

 

function texto_SEO($nome = '', $espacos = '_')

{

$RT = $nome;

$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;

$RT = strtolower($RT);

 

return $RT;

}

 

Para chamar: exibir_noticias.php?id=$id&titulo='.Texto_SEO($nome).'

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa pergunta! Hauahauhaua.

Voce deve procurar no seu codigo. :(

 

<?php
function Texto_SEO($nome = '', $espacos = '_')
{
$RT = $nome;
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;
$RT = strtolower($RT);

return $RT;
}

$id = 0;
$nome_com_acento = 'nôme cöm acÉntÒs';
$nome_sem_acento = Texto_SEO($nome_com_acento);
$link = 'exibir_noticias.php?id='.$id.'&titulo='.$nome_sem_acento;

echo '<a href="'.$link.'">'.$nome_com_acento .'</a>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desisto, amigo.

 

Preciso aprender muito ainda.

 

Obrigado pela sua disposição de ajudar.

 

 

 

WOW! Que é isos brow! Desista nao!

Poste ai o seu codigo.

Vamos procurar o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

// redeclarando a mesma função
function minha_function(){}
function minha_function(){}

 

Fatal error: Cannot redeclare minha_function() (previously declared

 

O seu problema é o mesmo, você deve estar incluindo a função duas vezes na página ou você tem uma na página e inclui a mesma de outro arquivo. A função está correta, o erro é apenas por estar redeclarando a mesma função, tipo como o exemplo acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Aí vai, amigo.

Você tem muita paciência com pessoas que pouco sabem!

 

<?php
// Selecionar servidor
include ("config.php");

// Pegar a página atual por GET
$p = $_GET["p"];
// Verifica se a variável tá declarada, senão deixa na primeira página como padrão
if(isset($p)) {
$p = $p;
} else {
$p = 1;

}

// Defina aqui a quantidade máxima de registros por página.
$qnt = 6;
// O sistema calcula o início da seleção calculando: 
// (página atual * quantidade por página) - quantidade por página
$inicio = ($p*$qnt) - $qnt;

echo "<table width=\"100%\" border=\"0\" cellspacing=\"4\" cellpadding=\"4\"><tr><td height=\"25\" bgcolor=\"#d5d5d5\"><b>Você está na página "."<big>"."$p"."</big>".". Divirta-se!</b></td></tr></table>";

// Seleciona no banco de dados com o LIMIT indicado pelos números acima
$sql_select = "SELECT * FROM noticias ORDER BY id DESC LIMIT $inicio, $qnt";
// Executa o Query
$sql_query = mysql_query($sql_select);

// Cria um while para pegar as informações do BD
while($array = mysql_fetch_array($sql_query)) {

// Variável para capturar o campo 'nome' no banco de dados
$id = $array["id"];
$nome = $array["nome"];
$data = $array["data"];
$categoria = $array["categoria"];
$notas = $array["notas"];
$resumo = $array["resumo"];
$visitas = $array["visitas"];

function texto_SEO($nome = '', $espacos = '_') 
{ 
$RT = $nome; 
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT; 
$RT = strtolower($RT); 

return $RT; 
}

// Exibe o nome que está no BD
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\"><tr><td><a href=\"exibir_noticias.php?id=$id&titulo='.Texto_SEO($nome).'\"><span class=\"style3\">$nome</span></a></td></tr><tr><td><span class=\"style4\">Em $categoria - $data<span></td></tr><tr><td>$resumo ... <a href=\"exibir_noticias.php?id=$id\"><i>Leia mais...</i></a></td></tr><tr><td valign=\"top\" bgcolor=\"#CCCCCC\"></td></tr></table>";
} 


// Faz uma nova seleção no banco de dados, desta vez sem LIMIT, 
// para pegarmos o número total de registros
$sql_select_all = "SELECT * FROM noticias";

// Executa o query da seleção acimas
$sql_query_all = mysql_query($sql_select_all);
// Gera uma variável com o número total de registros no banco de dados
$total_registros = mysql_num_rows($sql_query_all);
// Gera outra variável, desta vez com o número de páginas que será precisa. 
// O comando ceil() arredonda 'para cima' o valor
$pags = ceil($total_registros/$qnt);
// Número máximos de botões de paginação
$max_links = 4;
// Exibe o primeiro link 'primeira página', que não entra na contagem acima(3)
echo "<b><a href='index_noticias.php?p=1' target='_self'> Primeira</a></b> ";
// Cria um for() para exibir os 3 links antes da página atual
for($i = $p-$max_links; $i <= $p-1; $i++) {
// Se o número da página for menor ou igual a zero, não faz nada
// (afinal, não existe página 0, -1, -2..)
if($i <=0) {
//faz nada
// Se estiver tudo OK, cria o link para outra página
} else {
echo "<b><a href='index_noticias.php?p=".$i."' target='_self'>".$i."</a></b> ";
}
}
// Exibe a página atual, sem link, apenas o número
echo $p." ";
// Cria outro for(), desta vez para exibir 3 links após a página atual
for($i = $p+1; $i <= $p+$max_links; $i++) {
// Verifica se a página atual é maior do que a última página. Se for, não faz nada.
if($i > $pags)
{
//faz nada
}
// Se tiver tudo Ok gera os links.
else
{
echo "<b><a href='index_noticias.php?p=".$i."' target='_self'>".$i."</a></b> ";
}
}
// Exibe o link "última página"
echo "<b><a href='index_noticias.php?p=".$pags."' target='_self'> Última</a></b> ";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei!

 

Primeiro:

 

O comando while, é um loop, ou seja, pode ser executado de 0 ate infinitas vezes, dependendo de quanto a condicao for vendadeira, assim sendo, observe que voce esta declarando a funcao texto_SEO() dentro do while:

 

// Cria um while para pegar as informações do BD
while($array = mysql_fetch_array($sql_query)) {

// Variável para capturar o campo 'nome' no banco de dados
$id = $array["id"];
$nome = $array["nome"];
$data = $array["data"];
$categoria = $array["categoria"];
$notas = $array["notas"];
$resumo = $array["resumo"];
$visitas = $array["visitas"];

/*
* OLHA A FUNCAO AQUI! Deve estar fora do loop
*/

function texto_SEO($nome = '', $espacos = '_')
{
$RT = $nome;
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;
$RT = strtolower($RT);

return $RT;
}

// Exibe o nome que está no BD
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\"><tr><td><a href=\"exibir_noticias.php?id=$id&titulo='.Texto_SEO($nome).'\"><span class=\"style3\">$nome</span></a></td></tr><tr><td><span class=\"style4\">Em $categoria - $data<span></td></tr><tr><td>$resumo ... <a href=\"exibir_noticias.php?id=$id\"><i>Leia mais...</i></a></td></tr><tr><td valign=\"top\" bgcolor=\"#CCCCCC\"></td></tr></table>";
}

Assim, quantas noticias tiver, ele vai repetir a declaracao da funcao, aqui esta é o problema. Para reolver, tire a declaracao da funcao de dentro do while:

 

// funcao SEO
function texto_SEO($nome = '', $espacos = '_')
{
$RT = $nome;
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;
$RT = strtolower($RT);

return $RT;
}

// Cria um while para pegar as informações do BD
while($array = mysql_fetch_array($sql_query)) {

// Variável para capturar o campo 'nome' no banco de dados
$id = $array["id"];
$nome = $array["nome"];
$data = $array["data"];
$categoria = $array["categoria"];
$notas = $array["notas"];
$resumo = $array["resumo"];
$visitas = $array["visitas"];

// Exibe o nome que está no BD
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\"><tr><td><a href=\"exibir_noticias.php?id=$id&titulo='.Texto_SEO($nome).'\"><span class=\"style3\">$nome</span></a></td></tr><tr><td><span class=\"style4\">Em $categoria - $data<span></td></tr><tr><td>$resumo ... <a href=\"exibir_noticias.php?id=$id\"><i>Leia mais...</i></a></td></tr><tr><td valign=\"top\" bgcolor=\"#CCCCCC\"></td></tr></table>";
}

 

Segundo:

 

O echo nao vai imprimir o resultado da funcao porque voce manteve minhas aspas simples, enquanto esta usando aspas duplas para concatenar seu eccho, entao:

 

Substitua:

 

// Exibe o nome que está no BD
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\"><tr><td><a href=\"exibir_noticias.php?id=$id&titulo='.Texto_SEO($nome).'\"><span class=\"style3\">$nome</span></a></td></tr><tr><td><span class=\"style4\">Em $categoria - $data<span></td></tr><tr><td>$resumo ... <a href=\"exibir_noticias.php?id=$id\"><i>Leia mais...</i></a></td></tr><tr><td valign=\"top\" bgcolor=\"#CCCCCC\"></td></tr></table>";

Por:

 

// Exibe o nome que está no BD
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\"><tr><td><a href=\"exibir_noticias.php?id=$id&titulo=".texto_SEO($nome)."\"><span class=\"style3\">$nome</span></a></td></tr><tr><td><span class=\"style4\">Em $categoria - $data<span></td></tr><tr><td>$resumo ... <a href=\"exibir_noticias.php?id=$id\"><i>Leia mais...</i></a></td></tr><tr><td valign=\"top\" bgcolor=\"#CCCCCC\"></td></tr></table>";

 

CODIGO EDITADO

<?php
// Selecionar servidor
include ("config.php");

// Pegar a página atual por GET
$p = $_GET["p"];
// Verifica se a variável tá declarada, senão deixa na primeira página como padrão
if(isset($p)) {
$p = $p;
} else {
$p = 1;

}

// Defina aqui a quantidade máxima de registros por página.
$qnt = 6;
// O sistema calcula o início da seleção calculando:
// (página atual * quantidade por página) - quantidade por página
$inicio = ($p*$qnt) - $qnt;

echo "<table width=\"100%\" border=\"0\" cellspacing=\"4\" cellpadding=\"4\"><tr><td height=\"25\" bgcolor=\"#d5d5d5\"><b>Você está na página "."<big>"."$p"."</big>".". Divirta-se!</b></td></tr></table>";

// Seleciona no banco de dados com o LIMIT indicado pelos números acima
$sql_select = "SELECT * FROM noticias ORDER BY id DESC LIMIT $inicio, $qnt";
// Executa o Query
$sql_query = mysql_query($sql_select);

// funcao SEO
function texto_SEO($nome = '', $espacos = '_')
{
$RT = $nome;
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;
$RT = strtolower($RT);

return $RT;
}

// Cria um while para pegar as informações do BD
while($array = mysql_fetch_array($sql_query)) {

// Variável para capturar o campo 'nome' no banco de dados
$id = $array["id"];
$nome = $array["nome"];
$data = $array["data"];
$categoria = $array["categoria"];
$notas = $array["notas"];
$resumo = $array["resumo"];
$visitas = $array["visitas"];

// Exibe o nome que está no BD
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\"><tr><td><a href=\"exibir_noticias.php?id=$id&titulo=".texto_SEO($nome)."\"><span class=\"style3\">$nome</span></a></td></tr><tr><td><span class=\"style4\">Em $categoria - $data<span></td></tr><tr><td>$resumo ... <a href=\"exibir_noticias.php?id=$id\"><i>Leia mais...</i></a></td></tr><tr><td valign=\"top\" bgcolor=\"#CCCCCC\"></td></tr></table>";
}


// Faz uma nova seleção no banco de dados, desta vez sem LIMIT,
// para pegarmos o número total de registros
$sql_select_all = "SELECT * FROM noticias";

// Executa o query da seleção acimas
$sql_query_all = mysql_query($sql_select_all);
// Gera uma variável com o número total de registros no banco de dados
$total_registros = mysql_num_rows($sql_query_all);
// Gera outra variável, desta vez com o número de páginas que será precisa.
// O comando ceil() arredonda 'para cima' o valor
$pags = ceil($total_registros/$qnt);
// Número máximos de botões de paginação
$max_links = 4;
// Exibe o primeiro link 'primeira página', que não entra na contagem acima(3)
echo "<b><a href='index_noticias.php?p=1' target='_self'> Primeira</a></b> ";
// Cria um for() para exibir os 3 links antes da página atual
for($i = $p-$max_links; $i <= $p-1; $i++) {
// Se o número da página for menor ou igual a zero, não faz nada
// (afinal, não existe página 0, -1, -2..)
if($i <=0) {
//faz nada
// Se estiver tudo OK, cria o link para outra página
} else {
echo "<b><a href='index_noticias.php?p=".$i."' target='_self'>".$i."</a></b> ";
}
}
// Exibe a página atual, sem link, apenas o número
echo $p." ";
// Cria outro for(), desta vez para exibir 3 links após a página atual
for($i = $p+1; $i <= $p+$max_links; $i++) {
// Verifica se a página atual é maior do que a última página. Se for, não faz nada.
if($i > $pags)
{
//faz nada
}
// Se tiver tudo Ok gera os links.
else
{
echo "<b><a href='index_noticias.php?p=".$i."' target='_self'>".$i."</a></b> ";
}
}
// Exibe o link "última página"
echo "<b><a href='index_noticias.php?p=".$pags."' target='_self'> Última</a></b> ";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aha! Aqui deu certo.

 

<?php
function texto_SEO($nome = '', $espacos = '_')
{
$RT = $nome;
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;
$RT = strtolower($RT);

return $RT;
}

$str = 'Entrada de dólares em apenas dois meses supera o fluxo de 2010';

echo $str.'<br>'.texto_SEO($str);
?>

Imprimiu:

 

Entrada de dólares em apenas dois meses supera o fluxo de 2010

entrada_de_dolares_em_apenas_dois_meses_supera_o_fluxo_de_2010

 

O que pode estar errado é que algum caractere na sua pagina esta sendo impresso na realidade html. Tipo [ ó ] é igual a [ ó ].

Uma possivel solucao para isto e modificar sua funcao assim:

 

function texto_SEO($nome = '', $espacos = '_')
{
$RT = htmlspecialchars($nome); // aqui converte os caracteres especiais para a realidade HTML
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;
$RT = strtolower($RT);

return $RT;
}

 

Tente! Se nao der certo, poste! Tem outra possivel solucao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse, se nao der certo no ultimo exemplo, tente assim:

 

function texto_SEO($nome = '', $espacos = '_')
{
// CONVERTE Entities
$Tabela = get_html_translation_table(HTML_ENTITIES);
$Tabela = array_flip($Tabela);

$RT = strtr($nome, $Tabela);
$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$RT = $espacos != false ? str_replace(' ', $espacos, $RT) : $RT;
$RT = strtolower($RT);

return $RT;
}

 

E agora, deu?

 

------------------

Editado para corrigir a funcao.

 

de:

$RT = strtr($nome, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

para:

$RT = strtr($RT, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

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.