2012-01-16 22 views
5

Estoy escribiendo un mensaje de correo electrónico para enviar al enviar un formulario. Por algún motivo, el carácter \n se muestra correctamente en todas las líneas menos en una. No veo ninguna diferencia entre esta línea y las demás, así que no puedo entender por qué no está funcionando. El código está debajo, junto con el resultado que recibo y una lista de las variables utilizadas.¿Por qué n no funciona en una línea de mi script PHP, pero está bien en todos los demás?

Como puede ver en el correo electrónico, el \n al final de la línea 'Dirección de trabajo' no funciona, por lo que el "Nombre de la compañía" sigue directamente, en lugar de estar en la siguiente línea. Luego, el \n después del nombre de la empresa funciona bien, por lo que la dirección de casa se encuentra en la siguiente línea.

Aquí está el código para el mensaje:

$xmsg = "First Name: $firstname\n" . 
     "Last Name: $lastname\n" . 
    "Work Tel: $worktel\n" . 
    "Home Tel: $hometel\n" . 
    "Mobile Tel: $mobtel\n" . 
    "E-mail: $email\n" . 
    "Work Address: $workad\n" . 
    "Company Name: $company\n" . 
    "Home Address: $homead\n" . 

Aquí está la salida:

First Name: Joe 
Last Name: Bloggs 
Work Tel:
Home Tel: 0987654321 
Mobile Tel: 0789456123 
E-mail: [email protected] 
Work Address: Bloggoffice, Joe Street, London, N1 J0E Company Name: 
Home Address: 9 Blogg Street, Borough of Joe, London, SE4 J03 

Y en caso de que sea útil, aquí está la lista de las variables utilizadas:

$firstname = $_SESSION['firstname']; 
$lastname = $_SESSION['lastname']; 
$worktel = $_SESSION['worktel']; 
$hometel = $_SESSION['privtel']; 
$mobtel = $_SESSION['mobtel']; 
$email = $_SESSION['email']; 
$company = $_SESSION['companyname']; 
$workad = $_SESSION['workad1'] . ', ' . $_SESSION['workad2'] . ', ' .  $_SESSION['workad3'] . ', ' . $_SESSION['workpostcode']; 
$homead = $_SESSION['homead1'] . ', ' . $_SESSION['homead2'] . ', ' . $_SESSION['homead3'] . ', ' . $_SESSION['homepostcode']; 

Estaría agradecido por cualquier ayuda, ¡espero que no haya sido solo un estúpido error que he pasado por alto!

+6

¿Qué dice 'var_dump ($ workad)'? –

+3

Por favor [no agregue firmas o eslóganes a sus publicaciones] (http://stackoverflow.com/faq#signatures). – meagar

+0

en una nota al margen, no es realmente una buena práctica saturar el espacio de nombres de sesión con todas esas variables – jere

Respuesta

1

El uso de PHP_EOL constante parece más correcto que con \n. Porque PHP_EOL es el carácter correcto de fin de línea para cada plataforma.

+0

Sin embargo, realmente no importa. Nunca he tenido problemas con las terminaciones de líneas simples de Unix, excepto cuando intenta utilizar un programa de Windows anterior para abrirlas (pero ¿quién lo hace?) – Evert

+0

Esto parece haber resuelto el problema, ¡eso es genial, gracias! – Chris

Cuestiones relacionadas