web-dev-qa-db-fra.com

PHP nouveau saut de ligne dans les e-mails

J'ai le code suivant:

$message = "Good news! The item# $item_number on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\n
The seller, $bid_user is making this offer.\n
\nItem Title : $title\n

\nAll the best,\n
$bid_user\n
$email\n
";

echo $message;
$htmlContent = $baseClass->email_friend($item_number, $title, $bid_price, $bid_user, $mcat, $message, $email, $VIEWSTATE, $EVENTVALIDATION, $URL);

Le problème est que le nouveau saut de ligne(\n) ne fonctionne pas.

29
Michael

Essayez \r\n au lieu de \n

La différence entre\n et\r\n

Il convient de noter que cela s'applique aux retours de ligne dans les e-mails. Pour les autres scénarios, veuillez vous référer à rokjarc réponse .

45
Brendan Bullen

Je sais que c'est une vieille question mais de toute façon cela pourrait aider quelqu'un.

J'ai tendance à utiliser PHP_EOL à cet effet (en raison de la compatibilité multiplateforme).

echo "line 1".PHP_EOL."line 2".PHP_EOL;

Si vous prévoyez d'afficher le résultat dans un navigateur, vous devez utiliser "<br>".

EDIT: puisque votre question exacte concerne les e-mails, les choses sont un peu différentes. Pour les e-mails en texte pur, voir Brendan Bullen réponse acceptée . Pour les e-mails HTML, vous utilisez simplement le formatage HTML.

31
Rok Jarc

Construisez-vous cette chaîne à l'aide de guillemets simples ou doubles?\r et\n ne fonctionnent qu'avec des guillemets doubles, ainsi qu'avec des variables incorporées. Par exemple:

$foo = 'bar';
echo 'Hello \n $foo!';

affichera:

Hello \n $foo!

Mais:

$foo = 'bar';
echo "Hello \n $foo!";

affichera:

Hello
bar!
19
Harold1983-

Si vous effectuez une sortie en html ou un e-mail html, vous devrez utiliser <br> ou <br /> au lieu de \n.

S'il s'agit simplement d'un e-mail texte: utilisez-vous peut-être ' au lieu de "? Bien que vos valeurs ne soient pas insérées non plus ...

6
jeroen

vous pouvez utiliser "Line1<br>Line2"

6
Amjad Abu Saa

EDIT: Peut-être que votre classe d'envoi d'e-mails a une option pour les e-mails HTML et vous pouvez ensuite utiliser <br />

1) guillemets doubles

$output = "Good news! The item# $item_number  on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n";

Si vous utilisez des guillemets doubles, alors\n fonctionnera (il n'y aura pas de nouvelle ligne dans le navigateur mais voyez le code source dans votre navigateur - les caractères\n seront remplacés pour les nouvelles lignes)

2) guillemets simples n'a pas l'effet comme les guillemets doubles ci-dessus:

$output = 'Good news! The item# $item_number  on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n';

tous les caractères seront imprimés tels quels (même les variables!)

3) Sauts de ligne en HTML

$html_output = "Good news! The item# $item_number  on which you placed a bid of <br />$ $bid_price is now available for purchase at your bid price.<br />The seller, $bid_user is making this offer.<br /><br />Item Title : $title<br /><br />All the best,<br /> $bid_user<br />$email<br />";
  • Il y aura des sauts de ligne dans votre navigateur et les variables seront remplacées par leur contenu.
4
Martin Vseticka

si vous sortez le code en html - change/n ->
et faites echo $ message;

2
m0g

Lorsque nous insérons un saut de ligne avec un langage de programmation, le code de caractère correspondant est "\ n". php ne produit cela que html ne peut pas afficher qu'en raison de la rupture de ligne htmls est
. un moyen si simple de faire ce travail consiste à remplacer tous les "\ n" par "
". Le code doit donc être

str_replace("\n","<br/>",$str);

après avoir ajouté ce code, vous n'aurez pas à utiliser de balise pre pour toutes les opérations de sortie.

copié ce ans de ce site :

2
user2540315