Carlos Maniero 0 Denunciar post Postado Maio 30, 2009 Cara eu tô com um problema e preciso resolver ele urgente eu to trabalhando com PHP mais acredito que minha duvida seja HTML e não PHP a duvida é a seguinte sabemos que ao colocar um texto no banco de dados e depois mostra-lo em uma página é preciso que eu coloque dentro da tag <pre></pre> para que ele reconheça paragrafos mais ai que tá o erro esse texto em uma tabela e na hora da pessoa digitar ela não der ENTER o texto aparece em uma linha só, distruindo todo meu layout já tentei usar Width no FF roda de boa Mais no maldito IE necas e não quero usar overflow(CSS) porque fica ruim estéticamente alguem sabe como resolver esse erro para dar quebra de linha no IE? Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Retondar 18 Denunciar post Postado Maio 31, 2009 Fica difícil acharmos uma solução para seu problema sem ao menos ver o XHTML e CSS. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Se possível, poste um link. Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Maio 31, 2009 Meu caro Carlos Maniero, a solução para isso está no próprio PHP... Primeiro, vamos à lógica: se tenho um <textarea>, por exemplo, sabemos que o usuário pode usar quebras de linhas a mais apenas para ele poder enxergar melhor o que está digitando, certo? Pois bem, sabemos que esses "enters" são salvos no banco de dados... Então, o que temos que fazer? Na hora de exibir as informações que foram salvas, temos que identificar se há uma quebra de linha ou não... E com o PHP isso é possível! Segundo, vamos à prática. Observe o código abaixo: $texto = explode("[BR]", preg_replace("/(\\r)?\\n/i", "[BR]", $dadosDoBanco["texto"]));Aqui temos o seguinte: a função preg_replace usa uma expressão regular que busca quebras de linhas (o \r é opcional devido a alguns SOs, não me lembro agora quais são, reconhecerem a quebra de linha dessa forma ao invés de \n) e, no meu exemplo, todas as quebras serão substituídas por [bR] (usei essa simbologia apenas para exemplificar, fazendo uma relação à tag <br />...) no texto que veio do banco de dados. A função explode vai dividir seu texto justamente nos [bR]'s criados, fazendo então com que cada linha do texto do seu banco de dados, nesse momento, corresponde a uma posição do array criado, que dei o nome de $texto. Até aqui tudo bem? Agora vamos mostrar cada linha do texto em uma tag <p> separadamente. foreach($texto as $linha) { if(trim($linha) != "") { echo "<p>" . htmlentities($linha) . "</p>\n"; } }Tcharãm! Aqui está! Esse código acima faz o seguinte: para cada (foreach) índice do array $texto, vou chamar de $linha. Aqui está um grande detalhe: para evitar que sejam inseridas aquelas quebras de linhas a mais, simplesmente verifico se a $linha em questão não estiver vazia (diferente de "nada"), eu imprimo então uma tag <p>, seguido do conteúdo daquela linha, e depois fecho a tag </p>, adicionando uma quebra de linha no código apenas com o \n. E pronto! Agora você não precisa mais utilizar a tag <pre>... Espero que isso lhe ajude (e a outros também...). Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Retondar 18 Denunciar post Postado Maio 31, 2009 Eita, Paulo, isso é que é aula. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Acabei aprendendo essa parte de PHP, também :P Ótima explicação. Compartilhar este post Link para o post Compartilhar em outros sites
Carlos Maniero 0 Denunciar post Postado Maio 31, 2009 Valew Pela ajuda de todos, e realmente a explicação de paulo foi uma tremenda aula de PHP. Mais encontrei uma solução menos complexa: print nl2br($mensagem); Bem mais prático e tambem não precisa da tag <pre>. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Junho 1, 2009 Ah sim, claro, temos essa função nl2br (new line 2[two = to]br)... É que eu não uso a tag <br>... http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif No meu ponto de vista, na maior parte dos casos, se eu tenho uma nova linha de texto, naturalmente isso pode ser considerado como um novo parágrafo... Por isso eu sempre deixo cada linha de texto em um parágrafo diferente... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Mas que bom que resolveu! Boa sorte nos estudos! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 11, 2013 Pessoal Estou quebrando a cabeça aqui, vocês podem me ajudar? Seguinte, tenho um script que puxa informações de outro site, o site retorna as informações dentre de um <pre>, mas não consigo individualizar, ou seja, quero quebrar as linhas. Visualizando o retorno temos: <pre> O conteúdo do texto é esse. Dei uma olhada no código fonte e não encontrei nenhuma tag de quebra de linha. São várias linhas que eu quero tratar, mas sem individualizá-las esta difícil. Como posso resolver este problema? </pre> Coloquei todo o conteúdo de retorno na variável $resultado. O script é o seguinte: $texto = explode("<br />", preg_replace('/(\\r)?\\n/i', '<br />', $resultado["texto"])); foreach($texto as $linha) { if(trim($linha) != "") { echo "<p>" . htmlentities($linha) . "</p>\n"; } } Mas não consigo o retorno esperado. Se puderem me dizer o que esta errado, por favor. Compartilhar este post Link para o post Compartilhar em outros sites
Neto San 0 Denunciar post Postado Março 15, 2018 Fiz o que o Paulo ensinou e resolveu meu problema, no meu caso eu tirei a quebra de linha, fazendo que não tivesse paragráfo, obrigado Paulo. Compartilhar este post Link para o post Compartilhar em outros sites
Neto San 0 Denunciar post Postado Março 15, 2018 O meu eu fiz assim $palavra = $_POST['artigo']); $palavra = explode("[BR]", preg_replace("/(\\r)?\\n/i", "[BR]", $palavra)); foreach($palavra as $linha){ if(trim($linha) != "") { htmlentities($linha); } } $palavra = $linha; Compartilhar este post Link para o post Compartilhar em outros sites