• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Heirophant

Problema com "\n"

10 mensagens neste tópico

este é provavelmente o tópico mais simplista aqui do fórum mas como tenho este problema e não sei o que se passa, agradecia a ajuda aqui do pessoal:

<html>
<body>

<?php

echo "Hello World<br />"; //só funciona com break em HTML 

$um = 1;
$dois = 2;

printf("%d + %d = %d\n", $um, $dois, $um+$dois); // "\n" não funciona :§

echo "Teste";

?>

</body>
</html>

No caso em que uso "\n" ele nõ dá uma linha nova. Alguém me sabe dizer porquê?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funciona pois. O browser é que não te mostra newlines quando estás a ver um documento em html.

Ora ve lá o código fonte do output a ver se não funciona.

se o aspecto dos dados não for importante podes por exemplo embrulhar o teu output nas tags

<pre></pre>

Assim já consegues ver os newlines.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que não me expliquei bem.

Não é o facto de eu não ver os new lines no código, mas sim o facto de eles não funcionarem no meu browser.

Aqui fica um screen (o "Teste" deveria aparecer na linha abaixo não?)

64995258bo8.jpg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não.

As quebras de linhas no texto, bem como o espaços múltiplos são ignoradas pelo motor de HTML. O que aí está é exactamente o resultado esperado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<html>
<body>

<?php

echo "Hello World<br />"; //só funciona com break em HTML 

$um = 1;
$dois = 2;
$soma = $um + $dois 

//printf("%d + %d = %d\n", $um, $dois, $um+$dois); // "\n" não funciona :§
echo "$um + $dois = $soma <br /> "; 

echo "Teste";

?>

</body>
</html>


0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga, estás a falar em alhês e ele só percebe bugalhês.

O que tu precisas é de usar <br /> em HTML para teres uma quebra de linha visual. Quando tens vários \n e não queres trocá-los todos, podes usar a função nl2br().

Exemplo:

printf(nl2br("%d + %d = %d\n"), $um, $dois, $um+$dois);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga, estás a falar em alhês e ele só percebe bugalhês.

Mas estar a programar para Web e não saber HTML (e as suas propriedades) é, no mínimo, estranho.

Heirophant, eu aconselhava-te a estudares a estrutura do HTML.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado pela ajuda.

Estava a entrar no mundo do php e pelos tutoriais que ia lendo, nada me indicava que seria necessário usar a estrutura do HTML neste tipo de casos. Não é que perceba muito de HTML mas pensei o o próprio PHP fizesse essa conversão.

De qualquer forma, já percebi lol. Obrigado a todos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas estar a programar para Web e não saber HTML (e as suas propriedades) é, no mínimo, estranho.

E é a sugerir o uso do <pre> que ele vai aprender o quer que seja? :D
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E é a sugerir o uso do <pre> que ele vai aprender o quer que seja? :)

Sem me querer interferir, ele nunca sugeriu sequer que a recomendação feita sobre as <pre> fosse boa.

Só mostrou a sua opinião, nem sequer apontando para o post do pedrotuga, mas sim para o teu, sublinhando que será necessário a explicação devida de como tudo se passa.

It just happens que talvez pudesse haver uma relação semântica.

@OP: É normal pensares isso, mas tens de pensar que o PHP é processado no servidor, e que este é processado num ambiente consola-like, daí o \n, no entanto o motor do HTML não processa o \n como um line break visual, daí a necessidade do uso do <br/>. Como já foi mencionado, nl2br faz-te a papinha toda. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora