2010-07-06 6 views
1

Le code ci-dessous génère le texte pour l'e-mail qui est envoyé lorsqu'un utilisateur demande un nouveau mot de passe:PHP: question sur les lignes vides

<?php echo __('Your password has been reset, your new login information can be found below:') ?> 


Email: <?php echo $sfGuardUser->getEmailAddress().PHP_EOL; ?> 
Contraseña: <?php echo $password; ?> 

Comme vous pouvez le voir, il y a deux lignes vides entre les deux premières lignes de code. Lorsque l'email arrive, les lignes vides sont dans le même numéro que dans le fichier .php.

Dans ce cas deux. Je m'attendais juste la fin de la phrase "Votre mot de passe .." serait immédiatement suivi par "Email" ...

Quelqu'un peut-il m'expliquer pourquoi cela se produit?

+0

* Quelqu'un m'explique pourquoi cela se produit. * – mcandre

+0

Le client de messagerie Outlook est-il par hasard? – Sonny

+0

@Sonny: nope --- – ziiweb

Répondre

3

Tout ce qui est en dehors de <?php ?> sera envoyé directement au navigateur/envoyé à la ligne de commande, selon la façon dont vous appelez PHP. Si vous voulez éviter de les émettre, vous devez les rendre le code en les incluant dans la balise php:

<?php echo __('Your password has been reset, your new login information can be found below:') 


?> 
Email: <?php echo $sfGuardUser->getEmailAddress().PHP_EOL; ?> 
Contraseña: <?php echo $password; ?> 
1

Le contenu qui n'est pas compris entre < ?php et ?> n'est pas modifié ou réduit: il passe par le préprocesseur sans modification. Ainsi, vos lignes vides sont passées directement à la sortie.

0
<?php 
echo __('Your password has been reset, your new login information can be found below:'); 
echo '\n\n'; 
echo $sfGuardUser->getEmailAddress().PHP_EOL; 
echo '\n'; 
echo 'Contraseña:' . $password; ?> 
+0

Il veut avoir les sauts de ligne mais pas les sortir, essentiellement le contraire de ce que vous avez écrit. Si vous convertissiez 'echo '\ n \ n';' en deux lignes vides, ce serait ce qu'il veut. Aussi, 'echo '\ n \ n';' va sortir \ n \ n' verbatim; vous vouliez dire "echo" \ n \ n ";' –

0

PHP supprime uniquement sauts de ligne pour les balises ouvrir et fermer. En d'autres termes, il nettoie pour son propre saut de ligne, comme si ce n'était pas dans votre code.

Vous avez des sauts de ligne dans votre e-mail, sans rapport avec PHP. Si vous ne voulez pas les sauts de ligne, vous devez effectuer les opérations suivantes:

<?php echo __('Your password has been reset, your new login information can be found below:') ?> 
Email: <?php echo $sfGuardUser->getEmailAddress().PHP_EOL; ?> 
Contraseña: <?php echo $password; ?> 

Remarque J'ai supprimé les sauts de ligne.

Questions connexes