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

Heirophant

Problema com "\n"

Recommended Posts

Heirophant

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

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
Heirophant

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

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
Gonçalo_ssb

<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>


Share this post


Link to post
Share on other sites
djthyrax

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);


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
TheDark

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.


Desaparecido.

Share this post


Link to post
Share on other sites
Heirophant

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

Share this post


Link to post
Share on other sites
djthyrax

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

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
The Loser

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


I intend to live forever. So far so good.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.