Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

185
Vistas
¿Cuándo uso PHP_EOL en lugar de \n y viceversa? Problema con el cliente Ajax/Jquery

Tengo un analizador php que divide una cadena dada por saltos de línea, haciendo algo como esto:

 $lines = explode(PHP_EOL,$content);

El analizador funciona bien cuando se trabaja en el lado del servidor. Sin embargo, cuando paso el contenido por publicación mediante ajax (usando el método $.post de jquery) surge el problema: no se reconocen los saltos de línea. Entonces, después de casi una hora de pruebas y dolores de cabeza, decidí cambiar PHP_EOL por "\n" y funcionó:

$líneas = explotar("\n",$contenido);

¡Ahora funciona! ¡Maldita sea, perdí tanto tiempo! ¿Alguien podría explicarme cuándo usar PHP_EOL y "\n" correctamente, para poder ahorrar tiempo en el futuro? Agradezco sus amables respuestas ;)

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La constante PHP_EOL generalmente se debe usar para la salida específica de la plataforma.

  • Principalmente para la salida de archivos realmente.
  • En realidad, las funciones de archivo ya transforman \n ←→ \r\n en sistemas Windows a menos que se usen en modo binario fopen(…, "wb") .

Sin embargo, para la entrada de archivos , debe preferir \n . Si bien se supone que la mayoría de los protocolos de red (HTTP) usan \r\n , eso no está garantizado.

  • Por lo tanto, es mejor dividir en \n y eliminar manualmente cualquier \r opcional:

     $lines = array_map("rtrim", explode("\n", $content));

    O use la función file(…, FILE_IGNORE_NEW_LINES) de inmediato, para dejar el manejo de EOL a PHP o auto_detect_line_endings .

  • Una alternativa más robusta y concisa es usar preg_split() y una expresión regular:

     $lines = preg_split("/\R/", $content);

    El marcador de posición \R detecta cualquier combinación de \r + \n . Por lo tanto, sería más seguro e incluso funcionaría para archivos de texto ≤ 9 de MacOS clásico (rara vez se ve en la práctica).

    Nota de microoptimización obligatoria:
    Si bien la expresión regular tiene un costo, sorprendentemente a menudo es más rápida que los bucles manuales y el posprocesamiento de cadenas en PHP.

Y hay algunos ejemplos clásicos en los que debe evitar PHP_EOL debido a su ambigüedad de plataforma :

  • Generación manual de cargas útiles de protocolo de red, como HTTP sobre fsockopen() .
  • Para la construcción de mail() y MIME (que en realidad, no deberías hacer tediosamente tú mismo de todos modos).
  • Salida de archivo, si desea escribir constantemente solo saltos de línea de Unix \n independientemente del entorno.

Por lo tanto, use una combinación literal "\r\n" cuando no escriba en archivos, pero prepare datos para un contexto específico que espera saltos de línea de red .

over 4 years ago · Santiago Trujillo Denunciar

0

PHP_EOL debe usarse al escribir resultados como archivos de registro.

Producirá el salto de línea específico para su plataforma.

over 4 years ago · Santiago Trujillo Denunciar

0

PHP_EOL es una constante que contiene los caracteres de salto de línea utilizados por la plataforma del servidor. En el caso de Windows, es \r\n . En *nix, es \n . Aparentemente tienes un servidor de Windows.

Si estuviera en un servidor * nix, ese cambio no lo habría solucionado, porque sería \n . Si está enviando datos al cliente (es decir, el navegador), debe usar \r\n para asegurarse de que se reconozcan los saltos de línea.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda