AMON-HÁ 0 Denunciar post Postado Outubro 16, 2010 Pessoal, Andei dando uma pesquisada no fórum e até achei algumas coisas interessantes, como a informação de que para arquivos na plataforma linux a quebra de linha é \n e para arquivos na plataforma windows é \r\n. No entanto, como eu NÃO estou trabalhando com a montagem de um arquivo txt e sim, apenas, com o download de um arquivo já existente, esse tipo de informação não resolve o meu problema. No meu caso, tenho um arquivo txt no meu servidor com as seguintes caracteristicas: linha1 linha2 linha3 Quando faço o download usando a rotina abaixo, ele aparece assim: linha1linha2linha3 <?php $file = "arquivo.txt"; header("Content-type: application/save"); header("Content-Length:" . filesize($file)); header('Content-Disposition: attachment; filename=' . $file); header('Expires: 0'); header('Pragma: no-cache'); readfile("$file"); ?> E aí, como eu resolvo esse problema? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Outubro 16, 2010 Pode ser que resolva seu problema sim. Antes de produzir o download com o código, abra o TXT e substitua todos os "\n" por "\r\n". Pode ser que exista uma função que faça isso automaticamente, mas eu não conheço. Exemplo para substituição: preg_replace('/\\n/', '\r\n', $conteudoArquivo); Não sei se funcionaria, mas poderia até tentar assim: readfile("$file"); por: echo preg_replace('/\\n/', '\r\n', file_get_contents($file)); Se não funcionar, primeiro substitua normalmente, salve o arquivo, e use o readfile para iniciar o download. Até mais. Compartilhar este post Link para o post Compartilhar em outros sites
AMON-HÁ 0 Denunciar post Postado Outubro 16, 2010 Pode ser que resolva seu problema sim. Antes de produzir o download com o código, abra o TXT e substitua todos os "\n" por "\r\n". Pode ser que exista uma função que faça isso automaticamente, mas eu não conheço. Exemplo para substituição: preg_replace('/\\n/', '\r\n', $conteudoArquivo); Não sei se funcionaria, mas poderia até tentar assim: readfile("$file"); por: echo preg_replace('/\\n/', '\r\n', file_get_contents($file)); Se não funcionar, primeiro substitua normalmente, salve o arquivo, e use o readfile para iniciar o download. Até mais. tá saindo assim agora: linha1\r\nlinha2\r\nlinha3 Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Outubro 16, 2010 echo preg_replace('/\\n/', "\r\n", file_get_contents($file)); Tente assim. Compartilhar este post Link para o post Compartilhar em outros sites
AMON-HÁ 0 Denunciar post Postado Outubro 16, 2010 echo preg_replace('/\\n/', "\r\n", file_get_contents($file));Tente assim. Opa... deu certo... Mas diga uma coisa... ele não vai ficar deformado para usuário da plataforma linux não??? Vi alguma coisa sobre PHP_EOL que trata isso... como eu usaria??? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Outubro 16, 2010 echo preg_replace('/(\\r)?\\n(\\r)?/', PHP_EOL, file_get_contents($file)); Tente assim. Não trabalho com essa constante, mas é basicamente para o tratamento de finais de linha com PHP. Até onde eu sei não funciona com expressões regulares. Se não funcionar, mantenha dessa forma: echo preg_replace('/(\\r)?\\n(\\r)?/', "\r\n", file_get_contents($file)); Acredito que ninguém terá problemas em abrir txts dessa forma no Linux. Outra função que você pode experimentar é str_replace. Até mais. Compartilhar este post Link para o post Compartilhar em outros sites
AMON-HÁ 0 Denunciar post Postado Outubro 16, 2010 echo preg_replace('/(\\r)?\\n(\\r)?/', PHP_EOL, file_get_contents($file)); Tente assim. Não trabalho com essa constante, mas é basicamente para o tratamento de finais de linha com PHP. Até onde eu sei não funciona com expressões regulares. Se não funcionar, mantenha dessa forma: echo preg_replace('/(\\r)?\\n(\\r)?/', "\r\n", file_get_contents($file)); Acredito que ninguém terá problemas em abrir txts dessa forma no Linux. Outra função que você pode experimentar é str_replace. Até mais. A primeira opção não funcionou nem no Windows... Mas a segunda funcionou tanto no Windows quanto no Linux... Vlw pela ajuda... Compartilhar este post Link para o post Compartilhar em outros sites