Imprimir nueva línea en PHP entre comillas simples

125

Intento usar comillas simples tanto como sea posible y me he dado cuenta de que no puedo usar \ n en comillas simples. Sé que puedo ingresar una nueva línea literalmente presionando Intro, pero eso arruina la sangría de mi código.

¿Hay algún carácter ASCII o algo que pueda escribir que produzca nueva línea cuando estoy usando comillas simples?

Mate
fuente
Si alguien está interesado en una solución que funcione tanto para el navegador como para la terminal (cli, línea de comando): stackoverflow.com/a/9665253/1923625
Omar Tariq
Honestamente, no hay ninguna razón para buscar cotizaciones simples a toda costa . Ambas sintaxis sirven a una razón. Si desea variables interpoladas o secuencias escapadas, se supone que debe usar comillas dobles intencionalmente . Una buena regla a seguir es: siempre use comillas simples, a menos que quiera las comillas dobles por una buena razón . Eso es consistencia, mis amigos.
Victor Schröder

Respuestas:

142

No, porque las comillas simples incluso inhiben el reemplazo del código hexadecimal.

echo 'Hello, world!' . "\xA";
Ignacio Vazquez-Abrams
fuente
1
Ah ok ... esperaba no tener que recurrir a eso ... ¡Gracias!
Matt
sí señor. Lo respondió en menos de 10 min. Tuve que esperar hasta entonces para aceptar, luego lo olvidé jaja.
Matt
1
¿Hay alguna alternativa a esto? Necesito usarlo en un lugar donde no puedo usar comillas dobles.
Alex Hadley
1
Ese no es el razonamiento correcto. No es porque en PHP no se puede expresar un carácter de nueva línea entre comillas simples. Y eso es. Leer el manual podría haber ayudado :)
hakre
3
@hakre Seguramente, leer el manual podría haber ayudado, pero afortunadamente, StackOverflow es el lugar para buscar exactamente estas respuestas;)
Frederik Krautwald
108
echo 'hollow world' . PHP_EOL;

Utilice la constante PHP_EOL, entonces también es independiente del sistema operativo.

Tazas
fuente
44
Por lo general, no debe usar PHP_EOL, ya que esto hace que su código dependa del sistema en el que se ejecuta. Por ejemplo, su servidor Linux se está comunicando con otro servidor y luego su servidor es reemplazado por Windows ... No es bueno.
Andreas
25

Si usted es echo yendo a un navegador, puede usar <br/>con su estado de cuenta:

echo 'Will print a newline<br/>';
echo 'But this wont!';
Anthony Forloney
fuente
3
Lamentablemente es más para fines terminales ... gracias por su respuesta.
Matt
Pruebe esto en un correo electrónico de solo texto;)
Kai Noack
22

Para su información, es posible obtener nuevas líneas en cadenas sin comillas dobles:

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

Lo que puede ser útil si su miedo irracional a las comillas dobles no conoce límites. Aunque me temo que esta cura puede ser peor que la enfermedad.

potencias de sotavento
fuente
No es un miedo ... solo obtienes un mejor rendimiento cuando usas comillas simples, así que trato de usarlas con más frecuencia que no ... pero sí, esta no es realmente una gran solución para este problema, es más problemas de lo que vale la pena . Gracias.
Matt
55
No lo he probado, pero apuesto a que el uso de comillas dobles es más rápido que el uso printfo la cateación de cadenas en general.
Mikko Rantalainen
No siempre es irracional, las comillas dobles pueden ser problemáticas, dependiendo de lo que quieras hacer. echo 'For example, I want this to spit out php code.\necho $this->stuff;';
David Baucum
@DavidBaucum, sé que este es un hilo viejo, pero solo como referencia para usted y cualquier otra persona que se encuentre con esto, echo "For example, I want this to spit out php code.\necho \$test;";como puede ver, puede escapar de las variables, lo que resuelve el problema que describe con comillas dobles.
Josh Wood
9

Hay una diferencia en el uso de comillas simples VS dobles en PHP

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

  • en 1, PHP imprimirá literalmente: $var\n
  • en 2, PHP tendrá que buscar la ubicación en la memoria $vary devolver el valor en esa ubicación, también, tendrá que analizar el \ n como un nuevo carácter de línea e imprimir ese resultado

Estamos en el rango de millonésimas de segundo, pero hay una diferencia en el rendimiento. Le recomendaría que use comillas simples siempre que sea posible, incluso sabiendo que no podrá percibir este aumento de rendimiento. Pero soy un desarrollador paranoico cuando se trata de rendimiento.

linuxdev
fuente
Te aplaudo por tratar de buscar la mejor manera de hacerlo en lugar de usar la solución de comillas dobles, también conocida como lazy-developer-solution.
linuxdev
La mejor manera que sé para hacer lo que quieres: echo 'foo', "\ n";
linuxdev
3
La forma rápida de hacerlo esecho $var + "\n";
Hengjie
2
@Hengjie: Probablemente quieras decir echo $var . "\n";.
Skippy le Grand Gourou
@linuxdev: No veo el punto de esta respuesta. Como la salida de 1 no es la misma que la salida de 2 de todos modos (incluso suponiendo $var='$var'...), ¿no estás comparando manzanas con naranjas?
Skippy le Grand Gourou
8

La única secuencia de escape que puede usar entre comillas simples es para la comilla simple.

$foo = 'That\'s great';

La única forma de insertar una nueva línea en una cadena creada con comillas simples es insertar una nueva línea literal

$bar = 'That\'s
cheating';
Alan Storm
fuente
1
Eso se compara con las otras respuestas, la solución más fácil.
Kai Noack
5

Me pregunto por qué nadie agregó la alternativa de usar la función chr():

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

o, más eficiente si vas a repetirlo un millón de veces:

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

Esto evita la notación tonta de concatenar una cadena de comillas simples y dobles.

NewSites
fuente
1
Esta parece ser la solución IMO más bonita, más amigable con las pelusas y portátil.
daraul
3

Es posible que desee considerar el uso de <<<

p.ej

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

Más información en: http://php.net/manual/en/language.types.string.php

Por cierto, algunos entornos de codificación no saben cómo manejar la sintaxis anterior.

Duniyadnd
fuente
1
Ah sí ... pero todavía ODIO el hecho de que VARIABLE al final rompa toda sangría en su código ... Me he encontrado con tantos errores (estúpidos) usando la sintaxis HEREDOC
Matt
0

No, según la documentación , PHP no reconoce ningún símbolo especial entre comillas simples. Y no hay una sola razón para usar comillas simples tanto como sea posible

Su sentido común
fuente
Hay un ligero aumento en el rendimiento del uso de comillas simples. Además, parece una buena práctica definir explícitamente cuándo desea reemplazar las variables.
Jackson Miller
44
@Jackson no hay aumento de rendimiento. Por cualquier medio. Olvídate de estos rumores infantiles. Y no, no hablemos de variables, sino de secuencias especiales. Si desea expandir cualquier secuencia, una variable o una nueva línea, use comillas dobles, a su propósito . Y OP se niega a usarlo para su propósito no tiene sentido.
Su sentido común
No hay absolutamente ninguna razón para no usar comillas dobles cuando desea interpolar una variable dentro de una cadena. Lo mismo ocurre con un escape /npor saltos de línea. Es más fácil, más limpio, más legible y tiene cero penalización de rendimiento.
Victor Schröder
0

en caso de que tengas una variable:

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

Puedes usar esto:

echo 'Hello World' . "\n";
Prueba de Cisco
fuente
-1

Esto funcionó bien para mí:

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