Imprimir nova linha em PHP entre aspas simples

125

Tento usar aspas simples o máximo possível e notei que não posso usar \ n entre aspas simples. Eu sei que posso simplesmente inserir uma nova linha literalmente pressionando return, mas isso estraga o recuo do meu código.

Existe algum caractere ASCII ou algo que eu possa digitar que produza nova linha quando estou usando aspas simples?

Matt
fonte
Se alguém estiver interessado em uma solução que funcione para ambos navegador e terminais (CLI, linha de comando): stackoverflow.com/a/9665253/1923625
Omar Tariq
Honestamente, não há razão para procurar aspas simples a todo custo . Ambas as sintaxes servem para uma razão. Se você deseja variáveis ​​interpoladas ou seqüências de escape, deve usar aspas duplas intencionalmente . Uma boa regra a seguir é: sempre use aspas simples, a menos que deseje aspas duplas por um bom motivo . Essa é a consistência meus amigos.
Victor Schröder

Respostas:

142

Não, porque as aspas simples inibem a substituição do código hexadecimal.

echo 'Hello, world!' . "\xA";
Ignacio Vazquez-Abrams
fonte
1
Ah, ok .. Eu esperava não ter que recorrer a isso .. Obrigado!
Matt
sim senhor. Ele respondeu em menos de 10 minutos. Eu tive que esperar até então para aceitar, então eu esqueci haha.
Matt
1
Existe alguma alternativa para isso? Eu preciso usá-lo em um preg_replace que eu não posso usar aspas duplas no.
Alex Hadley
1
Esse não é o raciocínio certo. Não é porque no PHP você não pode expressar um caractere de nova linha entre aspas simples. E é isso. A leitura do manual poderia ter ajudado :) #
21413 hakre
3
@hakre Certamente, a leitura do manual poderia ter ajudado, mas, felizmente, StackOverflow é o lugar para olhar convenientemente por exatamente essas respostas;)
Frederik Krautwald
108
echo 'hollow world' . PHP_EOL;

Use a constante PHP_EOL, pois ela também é independente do sistema operacional.

Taças
fonte
4
Você normalmente não deve usar PHP_EOL, pois isso torna seu código dependente do sistema em que está sendo executado. Por exemplo, seu servidor Linux está se comunicando com outro servidor e, em seguida, seu servidor é substituído pelo Windows ... Nada bom.
Andreas
25

Se você estiver echoacessando um navegador, poderá usar <br/>com sua declaração:

echo 'Will print a newline<br/>';
echo 'But this wont!';
Anthony Forloney
fonte
3
Infelizmente, é mais para fins de terminal. Obrigado pela sua resposta.
Matt
Tente isso em um e-mail somente texto;)
Kai Noack 9/18
22

Para sua informação, é possível inserir novas linhas em strings sem aspas duplas:

printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL);

O que pode ser útil Se o seu medo irracional de aspas duplas não tem limites. Embora eu tema que essa cura seja pior que a doença.

leepowers
fonte
Não é um medo ... você apenas obtém melhor desempenho quando usa aspas simples, então eu tento usá-las com mais frequência do que não ... mas sim, isso não é realmente uma ótima solução para esse problema, é mais problemas do que vale a pena . Obrigado.
Matt
5
Não testei, mas aposto que o uso de aspas duplas é mais rápido do que o uso printfou a catenação de strings em geral.
Mikko Rantalainen
Nem sempre é irracional, as aspas duplas podem ser problemáticas, dependendo do que você deseja fazer. echo 'For example, I want this to spit out php code.\necho $this->stuff;';
David Baucum
@ DavidBaucum, eu sei que esse é um tópico antigo, mas apenas para referência a você e a qualquer pessoa que se deparar com isso, echo "For example, I want this to spit out php code.\necho \$test;";- como você pode ver, pode escapar das variáveis, o que resolve o problema descrito com aspas duplas.
Josh Wood
9

Existe uma diferença no uso de aspas duplas VS simples no PHP

por exemplo: 1. echo '$var\n'; 2.echo "$var\n";

  • em 1, o PHP imprimirá literalmente: $var\n
  • em 2, o PHP terá que procurar o local na memória $vare retornar o valor nesse local, além disso, precisará analisar o \ n como um novo caractere de linha e imprimir o resultado

Estamos na faixa de milionésimos de segundo, mas há uma diferença no desempenho. Eu recomendo que você use aspas simples sempre que possível, mesmo sabendo que não será capaz de perceber esse aumento de desempenho. Mas sou um desenvolvedor paranóico quando se trata de desempenho.

linuxdev
fonte
Aplaudo por tentar procurar a melhor maneira de fazer isso, em vez de usar a solução de aspas duplas AKA The lazy-developer-solution.
Linuxdev 9/10/11
A melhor maneira que eu conheço para fazer o que você deseja: echo 'foo', "\ n";
Linuxdev 9/10/11
3
A maneira mais rápida de fazer isso éecho $var + "\n";
Hengjie 28/11
2
@Hengjie: Você provavelmente quer dizer echo $var . "\n";.
Skippy le Grand Gourou
@linuxdev: Não vejo o objetivo desta resposta. Como a saída 1 não é a mesma que a saída 2 (mesmo assumindo $var='$var'...), você não está comparando maçãs com laranjas?
Skippy le Grand Gourou
8

A única sequência de escape que você pode usar em aspas simples é para a própria aspas simples.

$foo = 'That\'s great';

A única maneira de inserir uma nova linha em uma string criada com aspas simples é inserir uma nova linha literal

$bar = 'That\'s
cheating';
Alan Storm
fonte
1
Isso é comparado com as outras respostas, a solução mais fácil.
Kai Noack
5

Gostaria de saber por que ninguém adicionou a alternativa de usar a função chr():

echo 'Hello World!' . chr(10);

ou, mais eficiente, se você repetir um milhão de vezes:

define('C_NewLine', chr(10));
...
echo 'Hello World!' . C_NewLine;

Isso evita a notação tola de concatenar uma cadeia de caracteres simples e dupla.

NewSites
fonte
1
Essa parece ser a solução IMO mais bonita, mais amigável e portátil para fiapos.
daraul 21/02
3

Você pode considerar o uso de <<<

por exemplo

<<<VARIABLE
this is some
random text
that I'm typing 
here and I will end it with the 
same word I started it with
VARIABLE

Mais informações em: http://php.net/manual/en/language.types.string.php

Btw - Alguns ambientes de codificação não sabem como lidar com a sintaxe acima.

Duniyadnd
fonte
1
Ah sim ... mas eu ainda odeio o fato de essa variável nas quebras de fim tudo recuo em seu código ... Eu corri em tantos erros (estúpidas) utilizando a sintaxe heredoc
Matt
0

Não, de acordo com a documentação , o PHP não reconhece nenhum símbolo especial entre aspas simples. E não há uma única razão para usar aspas simples o máximo possível

Seu senso comum
fonte
Há um ligeiro aumento de desempenho no uso de aspas simples. Além disso, parece uma boa prática definir explicitamente quando você deseja que as variáveis ​​sejam substituídas.
27410 Jackson Jackson
4
@ Jackson não aumento de desempenho. Por qualquer meio. Esqueça esses rumores infantis. E não, não fale de variáveis, mas de sequências especiais. Se você deseja expandir qualquer sequência, variável ou nova linha - use aspas duplas, por isso . E o OP se recusar a usá-lo de propósito é um absurdo.
Seu senso comum
Não há absolutamente nenhuma razão para não usar aspas duplas quando você deseja interpolar uma variável dentro de uma string. O mesmo acontece com um escape /npara quebras de linha. É mais fácil, mais limpo, mais legível e tem penalidade de desempenho zero .
Victor Schröder
0

caso você tenha uma variável:

$your_var = 'declare your var';
echo 'i want to show my var here'.$your_var.'<br>';
Braham Youssef
fonte
0

Você pode usar isto:

echo 'Hello World' . "\n";
Teste da Cisco
fonte
-1

Isto funcionou bem para mim:

print_r('Hello world'.PHP_EOL);
Mohammad Zaid Pathan
fonte