Ir para conteúdo

POWERED BY:

Arquivado

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

marcosmendes

Salvar texto formatado no MYSQL com recurso nativo PHP

Recommended Posts

Pessoal,

 

Estou com uma necessidade de salvar um texto no Mysql, formatado com parágrafos, tabulações, pulos de linha, exatamente como escrito dentro da caixa de texto.

Não necessito de uma caixa de ferramenta como aqui no fórum, que possui várias ferramentas de formatação, como negrito, sublinhado, escolha de fonte, tamanho e etc. Não preciso de nada disso.
Eu só preciso do texto formatado esteticamente organizado da mesma forma que foi escrito.

Já vi que existe algumas ferramentas que fazem esse papel, mas como falei, não preciso de uma caixa de ferramentas, e nem gostaria de fazer isso com ferramentas e frameworks, gostaria de fazer isso com recursos nativos do PHP se é que existe.

Gostaria de alguma maneira, guardar os html entities ( &lt ) na hora que o usuário for digitando e salvar isto no banco, para quando resgatar do banco, o browser intérpretar essas entities. Enfim...
Vocês conhecem alguma solução que resolva meu problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em PHP não vai dar não. As ferramentas WYSIWYG normalmente são em Javascript. E para exibir o texto formatado em qualquer lugar, é necessário que ele tenha as tags HTML.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá marcosmendes,

 

Experimente estudar essas 3 funções do PHP:

 

nl2br() - http://www.php.net/manual/pt_BR/function.nl2br.php

 

htmlentities() - http://www.php.net/manual/pt_BR/function.htmlentities.php

 

html_entity_decode() - http://www.php.net/manual/pt_BR/function.html-entity-decode.php

 

Se tiver alguma dúvida sobre quais caracteres serão traduzidos:

 

get_html_translation_table() - http://www.php.net/manual/pt_BR/function.get-html-translation-table.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com uma necessidade de salvar um texto no Mysql, formatado com parágrafos, tabulações, pulos de linha, exatamente como escrito dentro da caixa de texto.

Não necessito de uma caixa de ferramenta como aqui no fórum, que possui várias ferramentas de formatação, como negrito, sublinhado, escolha de fonte, tamanho e etc. Não preciso de nada disso.

Eu só preciso do texto formatado esteticamente organizado da mesma forma que foi escrito.

 

Pelo que entendi, ele não disse que quer usar o php como editor de texto rico (rich text), mas sim um texto puro

 

Então basta salvar o texto originalmente como foi inserido...

 

A única proteção a ser aplicada seria o strip_tags para evitar xss injection quando precisar ler os dados.

 

Dependendo do caso, nem precisa do strip_tags, pois depende de onde esse texto será lido... por exemplo, se for lido dentro de um textarea html, apenas converta a tag textarea para prevenir quebrar a tag da view, impossibilitando xss injection.

 

 

e obviamente não precisa falar sobre sql injection né..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal,

 

Devido as respostas de vocês, acho que terei que usar um editor pela falta de suporte nativo.

 

  • Raul Silva
    Eu conheço a htmlentities() e a html_entity_decode(), mas não me ajudaram muito para minha necessidade. Vou dar uma olhada na nl2br() e na get_html_translation_table() para ver se me ajuda, obrigado pela dica.
  • hinom
    Sim! Eu não quero usar o php como rich text, quero salvar apenas um texto puro. Mas se eu salvar o texto originalmente como foi inserido, com tabulações, quebras de linha... quando eu resgatar do banco, o texto ficará sem essas tabulações nem quebras de linha, terei um texto imenso em apenas uma linha. Acho muito legal a parte de segurança que você falou, pois é uma das partes mais importantes e muita gente deixa de lado. Obrigado pelas dicas. Como devo fazer então para que o texto seja salvo no banco originalmente como foi inserido? Digo, tabulações e quebras de linha, não "Negrito, cores ( Rich text ) ".


Compartilhar este post


Link para o post
Compartilhar em outros sites

basta salvar sem fazer formatação alguma...

 

acho que o que está te confundindo é que vc resgata e enxerga o texto renderizado pelo browser,

 

mas experimente olhar o código fonte do brower.. o texto está lá com as quebras de linha, tabulações, etc..

 

 

para ler o texto de forma literal pelo browser, há diversos meios.. um meio simples é usar a tag

 

<pre>

foo

bar

</pre>

 

veja a diferença para

<div>

foo

bar

</div>

 

ou apenas jogue-o num textarea

 

<textarea>

foo

bar

</textarea>

 

Mas enfim.. se anida assim estiver vindo do banco sem as formatações originais, então provavelmente há algo errado no momento de salvar no banco.

 

 

É isso hinom! A tag <pre> resolveu todo esse problema!

Retorno o texto do banco de dados dentro da tag <pre> e voalá, tabulações, quebras de linhas, exatamente como foi salvo.

 

Pensar no simples é mais difícil, eu mesmo estava complicando algo relativamente simples.

Ótima solução de forma simples e funcional, muito obrigado hinom! Tudo resolvido.

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.