PHP - 如何创建换行符?

问题描述 投票:0回答:15

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

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

然后,我在记事本中打开创建的文件,它会按字面意思写入换行符:

1 无名氏 1 约翰·多伊 1 约翰·多伊

我尝试了许多

\r\n
的变体,但没有一个起作用。为什么换行符没有变成换行符?

php string-interpolation
15个回答
757
投票

只有双引号字符串将转义序列

\r
\n
分别解释为'0x0D'和'0x0A',所以你想要:

"\r\n"

单引号字符串,另一方面,只知道转义序列

\\
\'

因此,除非您将单引号字符串与其他地方生成的换行符连接起来(例如,使用双引号字符串

"\r\n"
或使用
chr
函数
chr(0x0D).chr(0x0A)
),否则在单个字符串中使用换行符的唯一方法带引号的字符串是用编辑器逐字输入它:

$s = 'some text before the line break
some text after';

如果您需要某些特定的字符序列(例如

\r\n
),请务必检查编辑器的换行符设置。


285
投票

使用预定义的

PHP_EOL
常量:

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

常量值将根据 PHP 执行的操作系统的行结束符进行设置。在 Linux 上,它将是

"\n"
;在 Windows 上,它将是
"\r\n"


117
投票

浏览器不会将换行符解析为两行,因为 HTML 中的换行符没有任何意义。这就是为什么当需要在 HTML 中换行时,必须添加一些标签,

<br>
是最简单的一个:

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

这将输出 HTML 换行符。

请注意,无论如何添加新行都是一个好主意,这样您在检查页面源代码时就会有可读的 HTML。


59
投票

无论平台如何,都使用常量 PHP_EOL 来获取正确的字符。

https://www.php.net/manual/en/reserved.constants.php

一个简单的使用示例:

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

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

25
投票

双引号之间的字符串

""
插入,这意味着它们将转义字符转换为可打印字符。

单引号

''
之间的字符串是字面意思,这意味着它们将被完全按照输入的字符进行处理。

您可以将两者放在同一行上:

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

输出:

$clientid $lastname
1 John Doe

16
投票

你应该使用这个:

"\n"

您可能还想看看 PHP EOL


14
投票

实际上

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

echo "<html>First line \r\n Second line</html>";

将输出:

<html>First line
Second line</html>

查看该页面将是:

First line Second line

如果您确实是这个意思,您只需用“”引号修复单引号即可:

echo "\r\n";

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

<br />

First line<br />Second line

将输出:

First line
Second line

如果将整个脚本替换为:

,它会更具可读性
echo "$clientid $lastname \r\n";

11
投票

有一个用于 HTML 输出的方便的 PHP 函数,可以在新行中添加

<br />
标签:

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

5
投票

没有什么对我有用。

PHP_EOL

. "\r\n";

$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";

4
投票

出于某种原因,每一篇询问 PHP 中的换行符转义的帖子都没有提及简单地将换行符插入单引号字符串中就可以完全按照您的想法进行操作的情况:

前 1.

 echo 'foo\nbar';

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

前2.

 echo 'foo
 bar';

示例 2 具有完全所需的行为。不幸的是,插入的换行符取决于操作系统。这通常不是问题,因为网络浏览器/服务器将正确解释换行符,无论它是 , , 或者 .

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

注意:使用功能丰富的文本编辑器,您应该能够将换行符作为二进制字符插入,该换行符代表与编辑文件的操作系统不同的操作系统上的换行符。如果一切都失败了,只需使用十六进制编辑器插入二进制 ascii 字符即可。


3
投票

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

$text =“Manu 是个好孩子。(输入)他编码得很好。

echo nl2br($text);

结果。

Manu 是个好孩子。

他的代码写得很好。


2
投票

使用 chr (13) 进行回车,使用 chr (10) 进行换行

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

1
投票

我还在单引号和双引号内尝试过这种组合。但没有一个奏效。最好在双引号中使用

\n
,而不是使用
<br/>
。像这样..

$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";

1
投票

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

<br>


0
投票
<?php
    $content = str_replace(PHP_EOL, "<br>", $your_content);
?>
<p><?php echo($content); ?></p>
© www.soinside.com 2019 - 2024. All rights reserved.