En PHP estoy tratando de crear un personaje de nueva línea:
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
Luego abro el archivo creado en el Bloc de notas y escribe la nueva línea literalmente:
1 John Doe \ r \ n 1 John Doe \ r \ n 1 John Doe \ r \ n
He intentado muchas variaciones de la \r\n
, pero ninguna funciona. ¿Por qué la nueva línea no se está convirtiendo en una nueva línea?
php
string-interpolation
davidjhp
fuente
fuente
Respuestas:
Solo las cadenas entre comillas dobles interpretan las secuencias de escape
\r
y\n
como '0x0D' y '0x0A' respectivamente, por lo que desea:Las cadenas entre comillas simples , por otro lado, solo conocen las secuencias de escape
\\
y\'
.Entonces, a menos que concatene la cadena entre comillas simples con un salto de línea generado en otro lugar (por ejemplo, usando una cadena con comillas dobles
"\r\n"
o unachr
funciónchr(0x0D).chr(0x0A)
), la única otra forma de tener un salto de línea dentro de una cadena entre comillas es literalmente escribirlo con su editor:Asegúrese de revisar su editor para ver su configuración de salto de línea si necesita una secuencia de caracteres específica (
\r\n
por ejemplo).fuente
PHP_EOL
en su lugarUse la
PHP_EOL
constante predefinida :El valor constante se establecerá de acuerdo con las terminaciones de línea del sistema operativo donde PHP se está ejecutando. En Linux, lo será
"\n"
; en Windows, lo será"\r\n"
.fuente
El comando "echo" en PHP envía la salida al navegador como html sin formato, por lo que incluso entre comillas dobles el navegador no lo analizará en dos líneas porque un carácter de nueva línea en HTML no significa nada. Es por eso que necesitas usar:
cuando use "echo", o en su lugar use fwrite ...
Esto generará una nueva línea HTML en lugar de "\ n".
fuente
Use la constante PHP_EOL para obtener el carácter correcto sin importar la plataforma.
http://us3.php.net/manual/en/reserved.constants.php
Un ejemplo de uso simple:
fuente
Las cadenas entre comillas dobles se
""
interpolan, lo que significa que convierten los caracteres escapados en caracteres imprimibles.Las cadenas entre comillas simples
''
son literales, lo que significa que se tratan exactamente como se escriben los caracteres.Puede tener ambos en la misma línea:
salidas:
fuente
echo "$clientid $lastname\r\n"
Deberías usar esto:
También es posible que desee echar un vistazo a PHP EOL .
fuente
En realidad
\r\n
es para el lado html de la salida. Con esos caracteres, puede crear una nueva línea en el código html para que sea más legible:dará salida:
que ver la página será:
Si realmente quisiste decir esto, solo tienes que arreglar la comilla simple con la comilla "":
De lo contrario, si quiere dividir el texto, en nuestra muestra 'Primera línea' y 'Segunda línea' debe usar el código html
<br />
:eso dará como resultado:
También sería más legible si reemplaza el script completo con:
fuente
First line Second line
: cualquier espacio en blanco, incluidas las nuevas líneas, se comprimirá a un carácter de espacio en la salida representada. Además,</br>
es cualquier cosa menos HTML válido.w3school ofrece de esta manera:
mediante el uso de esta función puedes hacerlo ... intenté otras formas que dijimos anteriormente pero no me ayudarán ...
fuente
nl2br()
función convierte los caracteres de nueva línea en la<br />
etiqueta HTML. Esto puede ser útil para crear una nueva línea en las páginas del navegador, pero no una nueva línea en archivos de texto, JavaScript o imprimir en la pantalla o la consola.Por alguna razón, cada publicación que pregunta sobre escapes de nueva línea en PHP no menciona el caso de que simplemente insertar una nueva línea en cadenas entre comillas simples hará exactamente lo que usted piensa:
ex 1.
El ejemplo 1 claramente no imprime el resultado deseado, sin embargo, si bien es cierto que no puede escapar de una nueva línea entre comillas simples, puede tener uno:
ex 2.
El ejemplo 2 tiene exactamente el comportamiento deseado. Lamentablemente, la nueva línea que se inserta depende del sistema operativo. Esto generalmente no es un problema, ya que los navegadores web / servidores interpretarán correctamente la nueva línea si es \ r, \ r \ n o \ n.
Obviamente, esta solución no es ideal si planea distribuir el archivo a través de otros medios que no sean un navegador web y múltiples sistemas operativos. En ese caso, debería ver una de las otras respuestas.
nota: con un editor de texto enriquecido con funciones, debería poder insertar una nueva línea como caracteres binarios que represente una nueva línea en un sistema operativo diferente al que está editando el archivo. Si todo lo demás falla, simplemente usaría un editor hexadecimal para insertar el carácter ascii binario.
fuente
Use PHP nl2br para obtener las nuevas líneas en una cadena de texto.
fuente
nl2br
función convierte los caracteres de nueva línea en la<br />
etiqueta HTML. Si la cadena no contiene ningún carácter de nueva línea, ¡esta función no hará nada! Además, la pregunta no se trata de romper una línea dentro de un párrafo en HTML. ¡Se trata del personaje de nueva línea !También probé esta combinación tanto entre comillas simples como entre comillas dobles. Pero ninguno ha funcionado. En lugar de usar
\n
mejor el uso<br/>
de las comillas dobles. Me gusta esto..fuente
Use chr (13) para retorno de carro y chr (10) para nueva línea
fuente
Para cualquier declaración de eco, siempre uso
<br>
comillas dobles.fuente
Nada me funcionaba.
PHP_EOL
. "\r\n";
Funciona para mi:
fuente
fuente