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?


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

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.


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!';

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.


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.


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

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.


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.


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


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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.