【问题标题】:PHP new line character (\n) Not Working [duplicate]PHP换行符(\ n)不工作[重复]
【发布时间】:2017-01-04 23:21:51
【问题描述】:
  • 代码在双引号中,但仍然无法正常工作。
  • I already read this post
  • 我正在使用 Atom 并且在本地主机上(如果这有什么不同的话)
  • 我重新下载了 Atom(以防设置出现问题)但没有帮助

代码如下:

<?php
$firstName = 'David';
$lastName = "Powers";
$title = '"The Hitchhiker\'s Guide to the Galaxy"';
$author = 'Douglas Adams';
$answer = 42;
$newLines = "\r\n\r\n";

$fullName = "$firstName $lastName |";
$book = "$title by $author";

$message = "Name: $fullName $newLines";
$message .= "Book: $book \r\n\r\n";
$message .= "Answer: $answer";

echo $message;
echo "Line 1\nLine 2";

输出都是一行,但是当我查看源代码时,新行正在工作

Name: David Powers | Book: "The Hitchhiker's Guide to the Galaxy" by Douglas Adams Answer: 42Line 1 Line 2

【问题讨论】:

  • HTML 无法识别换行符,您需要使用 &lt;br /&gt; 来打印换行符。您可以使用nl2br() 函数来执行此操作,例如echo nl2br($message);
  • 您是在命令行还是在浏览器中运行代码并查看输出?
  • @dave 他提到“当我查看源代码时”。必须是浏览器
  • 捕获输出缓冲区中的所有内容,(和/或)将其写入文件(直接),这些换行符就可以了。 ;-) 好的,它(可能/最有可能)没有直接回答问题,但在技术上是正确的。但是,如果打算写入文件,那么......同样的事情也适用。

标签: php


【解决方案1】:

如果您从PHP 5 For Dummies 的书中学习,这是您将学到的第一件事。 HTML 不尊重换行符、制表符或多个空格字符。您必须使用&lt;br /&gt; 换行。


* 来自PHP 5 For Dummies by Janet Valade

将您的代码更改为:

<?php
$firstName = 'David';
$lastName = "Powers";
$title = '"The Hitchhiker\'s Guide to the Galaxy"';
$author = 'Douglas Adams';
$answer = 42;
$newLines = "<br /><br />";

$fullName = "$firstName $lastName |";
$book = "$title by $author";

$message = "Name: $fullName $newLines";
$message .= "Book: $book <br /><br />";
$message .= "Answer: $answer";

echo $message;
echo "Line 1<br />Line 2";

如果您只是选择基于文本的布局,您可以将标题设置为浏览器以将其视为文本文件。为此,您需要:

header("Content-type: text/plain");

这将在没有任何 HTML 的情况下呈现。

【讨论】:

  • 我明白了。我直接从关于 Intro PHP 的 Lynda 课程中得到了这个。看了大家的cmets之后又去听了课程(想知道为什么不能用它在浏览器中显示为什么会在课程中)并意识到我错过了他的评论,“浏览器不显示回车和新行字符”。谢谢,您的意见有帮助。
【解决方案2】:

默认情况下,运行 PHP 脚本时,结果的内容类型设置为text/html。当浏览器呈现 HTML 时,换行符通常不被尊重,它们被视为任何其他空格。

如果您希望所有输出格式保持不变,并且您不发送 HTML,请告诉浏览器您发送的是纯文本。把它放在代码的开头:

header("Content-type: text/plain");

【讨论】:

  • 好的,很高兴知道。谢谢。
  • 问题:......如果它除了在源代码中无法在任何地方工作,他们为什么还要费心教它(在他们的示例中使用浏览器进行输出时)?我只是浪费了 2 个小时试图弄清楚这一点,然后又回到了 Lynda 的视频并重新听了一遍;他基本上说了同样的话,“浏览器不显示换行符”。 DOH!
  • 我不知道“他们”是谁。
  • 有很多不好的教程。当他们教授一个概念时,他们往往会忽略其他所有内容。
【解决方案3】:

Praveen Kumar 也提到了如何在 echo 中打印新行。

但如果您仍想使用转义序列,请使用 print_f 您可以在 printf 中使用其他转义序列,例如 \t,\n

<?php
$firstName = 'David';
$lastName = "Powers";
$title = '"The Hitchhiker\'s Guide to the Galaxy"';
$author = 'Douglas Adams';
$answer = 42;
$newLines = "\r\n\r\n";

$fullName = "$firstName $lastName |";
$book = "$title by $author";

$message = "Name: $fullName $newLines";
$message .= "Book: $book \r\n\r\n";
$message .= "Answer: $answer";

printf ($message);
printf ("Line 1\nLine 2");

【讨论】:

  • 添加了一些好的格式...:)希望它很好。
猜你喜欢
  • 2011-03-02
  • 2014-01-21
  • 2014-07-20
  • 1970-01-01
  • 2011-12-17
  • 2017-09-30
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
相关资源
最近更新 更多