gpt4 book ai didi

PHP 字符串连接和换行

转载 作者:可可西里 更新时间:2023-11-01 12:58:41 27 4
gpt4 key购买 nike

我需要一些帮助来理解一些对我来说没有意义的 PHP 行为,在此先感谢您的帮助。

首先,\r\n\n\r 的使用有区别吗?我认为逻辑上不,但我认为必须有一个实际的原因将它们单独列在 PHP 文档中。我目前正在使用 \r\n 但有时我会遇到换行符,有时我不会,这令人困惑。

其次,我知道如果我在浏览器中回显信息,我会使用 nl2br() 函数,但我没有向浏览器显示信息,它正在被收集并且连接成一个字符串,然后通过 mail() 发送,这就是出现视觉差异的地方。

这是脚本,非常简单,这里没有什么令人难以置信的:

<?php
$browser = $_SERVER['HTTP_USER_AGENT'];
$page = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$from_page = $_SERVER['HTTP_REFERER'];
$time = date('l, F jS Y - g:i:s A', $_SERVER['REQUEST_TIME']);
$uri = $_SERVER['SCRIPT_URI'];

$to = "***";
$subject = "Visitor Log";
$message = "IP Address : " . $ip . " ( HOST: " . $host . " )\r\n" . "Browser : " . $browser . "\r\n" . "From : " . $from_page . "\r\n" . "Page : " . $page . "\r\n" . "Time : " . $time . "\r\n" . "Script : " . $uri;
$headers = "From: ***" . "\r\n" . "Reply-To: ***" . "\r\n" . "X-Mailer: PHP/" . phpversion();
mail($to,$subject,$message,$headers);
?>

但如您所见,我在 $message 中填充了换行符,以便我收到的电子邮件具有明显的可读性。但有时电子邮件到了,所有内容都应该在单独的一行上,有时却没有。所以我想也许添加换行符的方法不是最好的,我做错了什么。

所以问题是,我应该使用什么来获得正确的换行符,如果我使用的不正确,如果它是正确的,为什么它不总是有效?非常感谢您协助澄清这一点。

如果重要或有所不同,我正在使用 PHP 5 (5.5.28) Linux 服务器和 Apache。


更新的答案

感谢大家的帮助,但最终我最终按如下方式修复它,甚至添加了内容类型以取得良好效果(TY @TOM)。

<?php
$browser = $_SERVER['HTTP_USER_AGENT'];
$page = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$from_page = $_SERVER['HTTP_REFERER'];
$time = date('l, F jS Y - g:i:s A', $_SERVER['REQUEST_TIME']);
$uri = $_SERVER['SCRIPT_URI'];

$to = "***";
$subject = "Visitor Log";
$message = "IP Address : " . $ip . " ( HOST: " . $host . " )" . "\r\n";
$message .= "Browser : " . $browser . "\r\n";
$message .= "From : " . $from_page . "\r\n";
$message .= "Page : " . $page . "\r\n";
$message .= "Time : " . $time . "\r\n";
$message .= "Script : " . $uri;
$headers = "From: ***" . "\r\n";
$headers .= "Reply-To: ***" . "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
$headers .= "Content-Type: text/html; charset=\"utf-8\"" . "\r\n";

mail($to,$subject,nl2br($message),nl2br($headers));
?>

注意:新格式不是解决方案的一部分,它仅适用于我自己。解决方案是放弃 plain 并使用 html 并使用 nl2br 函数强制中断,不优雅,不是我完全想要的但有效。

最佳答案

我最好的猜测是你有时发送文本/纯文本和有时作为文本/html..(因为你没有指定任何东西,也许邮件()或邮件服务器或客户端进行最佳猜测?你可以调查..)

我会尝试强制它作为文本/html 发送并使用

<br/>

与 nl2br,或将其强制为文本/纯文本并使用\n

喜欢...

$message = "IP Address : " . $ip . " ( HOST: " . $host . " )\r\n" . 'Content-Type: text/html; charset="utf-8"'."\r\n"."Browser : " . $browser . "\r\n" . "From : " . $from_page . "\r\n" . "Page : " . $page . "\r\n" . "Time : " . $time . "\r\n" . "Script : " . $uri;

..如果这就是你强制它以 html 格式发送邮件的方式,我不确定标题

关于PHP 字符串连接和换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com