PHP -如何创建换行符?

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

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

之后,我在记事本中打开创建的文件,它逐字写入换行符:

1 John Doe\r\n 1 John Doe\r\n 1 John Doe\r\n

我已经尝试了\r\n的许多变体,但没有一个工作。为什么换行符没有变成换行符?

1153443 次浏览

只有双引号字符串将转义序列\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),请确保检查编辑器的换行设置。

你应该这样使用:

"\n"

你可能还想看看PHP EOL

使用预定义的PHP_EOL常量:

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

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

单引号''之间的字符串是字面量,这意味着它们与输入的字符完全相同。

你可以把两者都写在同一行上:

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

输出:

$clientid $lastname
1 John Doe

我还在单引号和双引号中尝试了这种组合。但没有一个奏效。与其使用\n,不如在双引号中使用<br/>。像这样的. .

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

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

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

出于某种原因,每一篇关于PHP中的换行转义的文章都没有提到,简单地在单引号字符串中插入换行符就会像你想的那样:

例1。

 echo 'foo\nbar';

例1显然没有输出想要的结果,但是,虽然你不能在单引号中转义换行符,但你可以有一个:

例2。

 echo 'foo
bar';

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

显然,如果您计划通过web浏览器和多个操作系统等其他方式分发文件,那么这种解决方案就不理想了。在这种情况下,你应该看到其他答案之一。

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

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

Manu是个好孩子。(输入)他代码写得很好。

回声nl2br($文本);

结果。

Manu是个好孩子。

他代码写得很好。

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

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

这将输出HTML换行符。

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

使用常量PHP_EOL来获得正确的字符,无论使用什么平台。

http://us3.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);
?>

有一个方便的PHP函数用于HTML输出,它在新行中添加<br />标记:

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

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

You Can Try This.
<?php
$content = str_replace(PHP_EOL, "<br>", $your_content);
?>
 

<p><?php echo($content); ?></p>

对我来说什么都没用。

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