Ir para conteúdo

Arquivado

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

henrique56

Como não mostrar <br/> em textarea

Recommended Posts

Bom fds a todos, pessoal salvo no banco de dados uma variavel $texto e formato ela da teguinte forma para seja aceita as quebras de linha

 

$texto_formatado = preg_replace("/(\\r)?\\n/i", "<br/>", $texto);

Dai no banco ela fica tipo: "Meu texto <br/> Que foi digitado em um textarea", quando faço o select no banco, e dou um echo nele sai certinha as quebras de linha.

 

O meu problema é na hora de editar esse campo no admin, pq quando coloco isso aqui:

 

<textarea name="texto"><?php echo $texto; ?></textarea>

Ele não da as quebras de linha e mostra <br />. Como eu faço para que no textarea seja mostrada as quebras de linha e não o comando <br/>??

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu faço para que no textarea seja mostrada as quebras de linha e não o comando <br/>??

 

Deixa o usuário editar no textarea normalmente, grava no banco exatamente como o usuário digitou, quando você for exibir o conteúdo em outro lugar uitlize nl2br()

Compartilhar este post


Link para o post
Compartilhar em outros sites

João mais pra o usúario fica visualmente "feio" além de ele não entender nada sobre o <br/> e ficar ruim pra identificar onde ele quer alterar quando foi um texto grande.

 

Na vdd não tenho problemas ao exibir esse conteúdo em uma div por exemplo mais eh no textarea que ele continua aparecendo o <br/>

 

Exemplo do comando <?php echo $texto; ?> quando eh executado dentro de uma div:

 

"Primeira linha do texto,

 

Aqui dei duas quebras de linha.

Mais uma quebra de linha"

 

Exemplo do comando <?php echo $texto; ?> quando eh executado dentro de um textarea:

 

"Primeira linha do texto,<br/><br/>Aqui dei duas quebras de linha.<br/>Mais uma quebra de linha"

 

 

Agora imagine isso em um texto de uns 20 paragráfos por exemplo, por isso que quero que apareço no textarea conforme aparece em uma DIV.

 

 

Será que tem como fazer isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, tudo bem?

 

Existe um comentário no manual da nl2br que tem uma função que faz o inverso. Veja:

Another br2nl-Function. This works with text for textareas too... Other solutions here would result in \n in the textbox and no wrap.

<?php
function br2nl($string){
  $return=eregi_replace('<br[[:space:]]*/?'.
    '[[:space:]]*>',chr(13).chr(10),$string);
  return $return;
}
?>

Grüße!
Sebastian
Um abraço, tudo de bom.

Compartilhar este post


Link para o post
Compartilhar em outros sites

João mais pra o usúario fica visualmente "feio" além de ele não entender nada sobre o <br/> e ficar ruim pra identificar onde ele quer alterar quando foi um texto grande.

Amigo, ou você não entendeu o que eu disse, ou você não testou.

 

1. Você tem um textarea.

2. Um usuário escreve um looooongo texto nesse textarea.

3. Você salva no banco de dados exatamente como o usuário escreveu (sem o <br />)

4. Você recupera o texto salvo no banco (sem o <br />) para exibir em uma página qualquer.

4.1. Antes de exibir o texto você usa a função n2lbr com o texto cru do banco

4.2. Agora que todas as quebras de linha do texto foram todas convertidas em <br /> pela função nl2br você exibe na página.

 

 

Compreendeu ?

 

Como o texto está salvo no banco sem <br />, quando você usar um:

<textarea><?php echo $texto_do_banco; ?></textarea>

 

Será exibido para o usuário exatamente igual ao que ele digitou a primeira vez.

 

Quando você for exibir em uma página qualquer você faz:

<p>
<?php echo nl2br( $texto_do_banco ); ?>
</p>

 

Agora, todas as quebras de linha do banco de dados viraram <br /> e o resultado será exatamente o esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

João e pela questão de desempenho, se for usado assim em uma pagina em que é requisitado umas 30 mil visitas o servidor pode ter problema converter tudo para <br/> para casa requisição, por esse motivo creio o melhor em caso de servidor com muitas requisição ser melhor usa o nl2br antes de inserir no DB... ao exibir na textarea usa algo para retorna quebras sem o <br/> ou algo como o Willian citou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você estiver diante de uma aplicação com 30 mil visitas então você deve procurar sobre cache, veja http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://br.php.net/manual/pt_BR/book.memcache.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

É claro, usando Cache é a melhor, algo funciona em uma pagina onde o usuário entra e são testes de exercícios de concursos onde cada acesso os teste devem estar em modo aleatório.

Claro que os 30 mil acesso estão em telas onde esta as informações mais a tela de teste ao ser cadastradas e comentários nunca ou quase nunca são alterados, para que sempre usa "nl2br" se pode ao exibir, como a alteração é quase nunca ocorre mais pode ocorrer pode alterar o "<br/>" para a quebra no textarea!!

É minha ideia e claro pode ter discordância!

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.