2010-07-06 22 views
1

問題下面的代碼生成就是當用戶請求一個新的密碼發送的電子郵件的文本: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; ?> 

正如你可以看到有兩間兩個空行第一行代碼。

當電子郵件到達時,空行的數量與.php文件中的數量相同。在這種情況下兩個。我剛剛預計句子「您的密碼..」的結尾會緊跟着「電子郵件」...

有人可以向我解釋爲什麼會發生這種情況嗎?

+0

*有人向我解釋爲什麼會發生這種情況。* – mcandre 2010-07-06 18:49:18

+0

電子郵件客戶端Outlook有沒有機會? – Sonny 2010-07-06 18:50:13

+0

@Sonny:nope --- – ziiweb 2010-07-06 18:58:30

回答

3

<?php ?>之外的任何內容都會直接發送到瀏覽器/輸出到命令行,具體取決於您如何調用PHP。如果你想避免發射它們,你需要通過包括他們在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

不在< ?php?>之間的內容未被修改或摺疊 - 它未經更改而通過預處理器。所以,你的空行直接傳遞到輸出。

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

他想要斷行但不輸出它們,本質上與你寫的相反。如果您將'echo'\ n \ n';'轉換爲兩個空行,那麼這就是他想要的。另外,'echo'\ n \ n';'會逐字輸出'\ n \ n';你的意思是「回聲」\ n \ n「;' – 2010-07-06 18:55:31

0

PHP刪除換行符的打開和關閉標籤。換句話說,它會清理它自己的換行符,就像它不在你的代碼中一樣。

您的電子郵件中有與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; ?> 

注意我刪除了換行符。