PHP - 如何创建换行符?

dav*_*jhp 385 php string-interpolation

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

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
Run Code Online (Sandbox Code Playgroud)

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

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

我尝试了很多变化\r\n,但没有工作.为什么新线不能换成新线?

Gum*_*mbo 609

只有双引号字符串才能解释转义序列,\r并分别\n为'0x0D'和'0x0A',因此您需要:

"\r\n"
Run Code Online (Sandbox Code Playgroud)

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

因此,除非您将单引号字符串与其他地方生成的换行符连接起来(例如,使用双引号字符串"\r\n"或使用chr函数 chr(0x0D).chr(0x0A)),在单个引用字符串中使用换行符的唯一其他方法是使用您的编辑器直接输入:

$s = 'some text before the line break
some text after';
Run Code Online (Sandbox Code Playgroud)

如果需要某些特定的字符序列(\r\n例如),请务必检查编辑器的换行设置.

  • 您应该使用“PHP_EOL”代替 (3认同)

nne*_*ala 217

对于平台无关的行结束,您可以使用预定义的PHP_EOL常量,如:

echo $clientid, ' ', $lastname, PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

  • Gumbo,nnevala的意思是从编码的角度来看,一个平台是什么并不重要. (35认同)
  • `PHP_EOL`实际上更倾向于平台,因为它的值取决于平台. (10认同)

dav*_*511 92

PHP中的"echo"命令将输出作为原始html发送到浏览器,因此即使在双引号中,浏览器也不会将其解析为两行,因为HTML中的换行符不代表任何内容.这就是你需要使用的原因:

echo [output text]."<br>";
Run Code Online (Sandbox Code Playgroud)

当使用"echo"时,或者改为使用fwrite ...

fwrite([output text]."\n");
Run Code Online (Sandbox Code Playgroud)

这将输出HTML换行符代替"\n".

  • 通过询问问题的方式,他可能会将此数据输出到文本框或javascript等,以便解析或纯文本阅读不会呈现为HTML (3认同)
  • @PC3TJ 当一百万用户从 Google 寻求答案时,提出最初问题的方式就变成了宇宙中最不重要的事情。 (2认同)

Sal*_*ual 36

无论平台如何,使用常量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);
?>
Run Code Online (Sandbox Code Playgroud)


Kev*_*ler 21

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

单引号之间的字符串''是字面值,这意味着它们的处理方式与键入的字符完全相同.

你可以在同一条线上:

echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";
Run Code Online (Sandbox Code Playgroud)

输出:

$clientid $lastname
1 John Doe
Run Code Online (Sandbox Code Playgroud)


Wou*_*elo 15

你应该用这个:

"\n"
Run Code Online (Sandbox Code Playgroud)

您也可能想看看PHP EOL.


Sho*_*hoe 13

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

echo "<html>First line \r\n Second line</html>";
Run Code Online (Sandbox Code Playgroud)

将输出:

<html>First line
Second line</html>
Run Code Online (Sandbox Code Playgroud)

查看页面将是:

First line Second line
Run Code Online (Sandbox Code Playgroud)

如果你真的这意味着你只需用""引用修复单引号:

echo "\r\n";
Run Code Online (Sandbox Code Playgroud)

否则,如果您要拆分文本,请在我们的示例"第一行"和"第二行"中使用html代码<br />::

First line<br />Second line
Run Code Online (Sandbox Code Playgroud)

将输出:

First line
Second line
Run Code Online (Sandbox Code Playgroud)

如果用以下内容替换整个脚本,它也会更具可读性:

echo "$clientid $lastname \r\n";
Run Code Online (Sandbox Code Playgroud)


ami*_*ami 9

w3school提供这种方式:

echo nl2br("One line.\n Another line.");
Run Code Online (Sandbox Code Playgroud)

通过使用这个功能你可以做到..我试过上面说的其他方式,但他们不会帮助我..


小智 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);
Run Code Online (Sandbox Code Playgroud)

对我有用:

$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";
Run Code Online (Sandbox Code Playgroud)

  • 实际上有**十几个**答案表明了同样的观点。怎么没有一个对你有用?第一个代码片段的意义是什么?它不会添加,而是删除新行字符。 (2认同)