PHP-如何创建换行符?

PHP-如何创建换行符?,php,string-interpolation,Php,String Interpolation,在PHP中,我尝试创建一个换行符: echo $clientid; echo ' '; echo $lastname; echo ' '; echo '\r\n'; 之后,我在记事本中打开创建的文件,它会按字面意思写新行: 1无名氏\r\n 1无名氏\r\n 1无名氏\r\n 我尝试了许多\r\n的变体,但都不起作用。为什么换行符没有变成换行符?仅将转义序列\r和\n分别解释为“0x0D”和“0x0A”,因此您需要: "\r\n" 另一方面,只知道转义序列\\和\' 因此,除非将单引号字符串

在PHP中,我尝试创建一个换行符:

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
之后,我在记事本中打开创建的文件,它会按字面意思写新行:

1无名氏\r\n 1无名氏\r\n 1无名氏\r\n

我尝试了许多
\r\n
的变体,但都不起作用。为什么换行符没有变成换行符?

仅将转义序列
\r
\n
分别解释为“0x0D”和“0x0A”,因此您需要:

"\r\n"
另一方面,只知道转义序列
\\
\'

因此,除非将单引号字符串与其他地方生成的换行符连接(例如,使用双引号字符串
“\r\n”
或使用
chr(0x0D).chr(0x0A)
),否则在单引号字符串中使用换行符的唯一其他方法是使用编辑器直接键入它:

$s = 'some text before the line break
some text after';
如果需要某些特定的字符序列(例如,
\r\n
),请确保检查编辑器的换行设置。

您应该使用:

"\n"
您可能还想看看。

使用预定义的常量:

echo $clientid, ' ', $lastname, PHP_EOL;

常量值将根据执行PHP的操作系统的行尾进行设置。在Linux上,它将是
“\n”
;在Windows上,它将是
“\r\n”

实际上
\r\n
用于输出的html端。使用这些字符,您只需在html代码中创建一个换行符,使其更具可读性:

echo "<html>First line \r\n Second line</html>";
如果你真的是这个意思,你只需要用“”引号来修正单引号:

否则,如果要拆分文本,在我们的示例“第一行”和“第二行”中,您必须使用html代码:

First line<br />Second line
此外,如果将整个脚本替换为以下内容,则更具可读性:

echo "$clientid $lastname \r\n";

双引号之间的字符串插入,这意味着它们将转义字符转换为可打印字符

单引号之间的字符串
“”
是文字,这意味着它们与键入的字符完全相同

您可以在同一行中同时使用这两个选项:

echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";
产出:

$clientid$lastname
1无名氏

我也在单引号和双引号中尝试了这种组合。但没有一个成功。不要使用
\n
最好在双引号中使用

。像这样

$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";
$variable=“and”;
回显“第1部分$可变第2部分
”; 回显“第1部分”。$变量。“第2部分”;
回车时使用chr(13),换行时使用chr(10

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);

出于某种原因,每一篇关于PHP中换行符转义的帖子都没有提到这样一种情况,即只需在单引号字符串中插入换行符,就会完全符合您的想法:

例1

示例1显然没有打印所需的结果,但是,虽然确实不能在单引号中转义换行符,但可以有一个:

例2

示例2正好具有所需的行为。不幸的是,插入的换行符依赖于操作系统。这通常不是问题,因为web浏览器/服务器将正确解释换行符\r\n或\r\n

显然,如果您计划通过web浏览器以外的其他方式将文件分发到多个操作系统,则此解决方案并不理想。在这种情况下,您应该看到其他答案之一


注意:使用功能丰富的文本编辑器,您应该能够以二进制字符的形式插入换行符,该字符在不同于编辑文件的操作系统上表示换行符。如果所有其他操作都失败,只需使用十六进制编辑器插入二进制ascii字符即可。

使用PHP nl2br获取文本字符串中的换行符。

$text=“马努是个好孩子。(输入)他能很好地编写代码

echo nl2br($text)

结果。

马努是个好孩子

他能很好地编码

PHP中的“echo”命令将输出作为原始html发送到浏览器,因此即使在双引号中,浏览器也不会将其解析为两行,因为html中的换行符没有任何意义。这就是为什么您需要使用:

echo [output text]."<br>";

这将输出HTML换行符来代替“\n”。

使用常量PHP\u EOL来获得正确的字符,无论平台如何

一个简单的用法示例:

<?php
$data = 'First line' . PHP_EOL .
        'Second line' . PHP_EOL .
        'Third line';

file_put_contents("filename.txt", $data);
?>

W3学校提供以下服务:

echo nl2br("One line.\n Another line.");

通过使用此函数,您可以做到这一点。我尝试了上述其他方法,但它们对我没有帮助。

对于任何回音语句,我总是在双引号内使用

你可以试试这个。

对我来说什么都不管用。

PHP\u EOL

“\r\n”

对我有效:

$admin_email_Body = $admin_mail_body .'<br>' ."\r\n";
$admin_email_Body .= 'This is line 2 <br>' ."\r\n";
$admin_email_Body .= 'This is line 3 <br>' ."\r\n";
$admin\u email\u Body=$admin\u mail\u Body.“
”。“\r\n”; $admin\u email\u Body.='这是第2行。“\r\n”; $admin\u email\u Body.='这是第3行。“\r\n”;
可能重复的No,不应该重复。因为它大部分是错误的。第一个代码块将呈现为
第一行第二行
-任何包含换行符的空白都将压缩到呈现输出中的一个空格字符。此外,

不是有效的HTML。如果您发送文本电子邮件,请记住在php脚本中,您仍然需要这些行尾而不是换行符(
)@Pacerier在单引号字符串中使用回车符和新行字符的唯一方法是通过键盘直接输入字符(按Enter键,具体取决于编辑器对行尾的设置)。否则就使用字符串连接。@Gumbo:你说的是单引号字符串,而另一方面,你只知道转义序列\\和\'。但我只是打印了一行带有echo as的行,并在浏览器中看到了输出。它在我显示的两个字符串之间添加了新行。这意味着字符

以单引号展开除此之外还有其他类似的HTML字符吗
 echo 'foo\nbar';
 echo 'foo
 bar';
echo [output text]."<br>";
fwrite([output text]."\n");
<?php
$data = 'First line' . PHP_EOL .
        'Second line' . PHP_EOL .
        'Third line';

file_put_contents("filename.txt", $data);
?>
echo nl2br("One line.\n Another line.");
$NEWLINE_RE = '/(\r\n)|\r|\n/'; // take care of all possible newline-encodings in input file
$var = preg_replace($NEWLINE_RE,'', $var);
$admin_email_Body = $admin_mail_body .'<br>' ."\r\n";
$admin_email_Body .= 'This is line 2 <br>' ."\r\n";
$admin_email_Body .= 'This is line 3 <br>' ."\r\n";