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.
Essayez \r\n
au lieu de \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 .
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.
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!
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 ...
vous pouvez utiliser "Line1<br>Line2"
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 />";
si vous sortez le code en html - change/n ->
et faites echo $ message;
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.