【发布时间】:2011-05-13 09:53:36
【问题描述】:
在 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 的许多变体,但都没有奏效。为什么换行符不变成换行符?
【问题讨论】:
在 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 的许多变体,但都没有奏效。为什么换行符不变成换行符?
【问题讨论】:
只有double quoted strings 将转义序列\r 和\n 分别解释为“0x0D”和“0x0A”,所以你想要:
"\r\n"
另一方面,Single quoted strings 只知道转义序列\\ 和\'。
因此,除非您将单引号字符串与在其他地方生成的换行符连接起来(例如,使用双引号字符串 "\r\n" 或使用 chr function chr(0x0D).chr(0x0A)),否则在单引号内有换行符的唯一另一种方法string 是用你的编辑器按字面意思输入它:
$s = 'some text before the line break
some text after';
如果您需要某些特定的字符序列(例如\r\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";
【讨论】:
First line Second line - 包括换行符在内的任何空格都将在呈现的输出中压缩为一个空格字符。此外,</br> 不是有效的 HTML。
双引号 "" 之间的字符串插入,这意味着它们将转义字符转换为可打印字符。
单引号'' 之间的字符串是字面的,这意味着它们的处理方式与输入的字符完全相同。
您可以将两者放在同一行:
echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";
输出:
$clientid $lastname
1 John Doe
【讨论】:
echo "$clientid $lastname\r\n"
我也在单引号和双引号中尝试过这种组合。但没有一个奏效。与其使用\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 具有完全所需的行为。不幸的是,插入的换行符取决于操作系统。这通常不是问题,因为无论是 \r、\r\n 还是 \n,Web 浏览器/服务器都会正确解释换行符。
显然,如果您打算通过其他方式(例如 Web 浏览器)和多个操作系统分发文件,则此解决方案并不理想。在这种情况下,您应该会看到其他答案之一。
注意:使用功能丰富的文本编辑器,您应该能够插入换行符作为二进制字符,它表示与编辑文件的操作系统不同的操作系统上的换行符。如果一切都失败了,只需使用十六进制编辑器插入二进制 ascii 字符即可。
【讨论】:
使用 PHP nl2br 获取文本字符串中的换行符..
$text = "Manu 是个好孩子。(Enter)他会写代码。
回声 nl2br($text);
结果。
马努是个好孩子。
他的代码写得很好。
【讨论】:
nl2br 函数将换行符转换为<br /> HTML 标记。如果字符串不包含任何换行符,这个函数什么也不做!此外,问题不在于在 HTML 的段落中换行。这是关于换行符!
PHP 中的“echo”命令将输出作为原始 html 发送到浏览器,因此即使使用双引号,浏览器也不会将其解析为两行,因为 HTML 中的换行符没有任何意义。这就是为什么您需要使用:
echo [output text]."<br>";
当使用“echo”时,或者改为使用 fwrite...
fwrite([output text]."\n");
这将输出 HTML 换行符代替“\n”。
【讨论】:
无论平台如何,使用常量 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);
?>
【讨论】:
w3school 以这种方式提供:
echo nl2br("One line.\n Another line.");
通过使用这个功能你可以做到..我尝试了上面所说的其他方法,但他们不会帮助我..
【讨论】:
nl2br() 函数将换行符转换为<br /> HTML 标记。这对于在浏览器页面上创建换行符可能很有用,但对于在文本文件或 JavaScript 中创建换行符或打印到屏幕或控制台没有用。
对于任何 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";
【讨论】: