在PHP中,我尝试创建换行符:
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '
';
然后,我在记事本中打开创建的文件,它按字面意义写换行符:
1 John Doe
1 John Doe
1 John Doe
我尝试了
的许多变体,但没有任何效果。 为什么换行符不变成换行符?
PHP中可能用单引号将Print newline复制
只有双引号字符串将转义序列和分别解释为'0x0D'和'0x0A',因此您需要:
"
"
另一方面,单引号字符串只知道转义序列\\和\'。
因此,除非您将单引号引起来的字符串与在其他地方生成的换行符连接起来(例如,使用双引号引起来的字符串"
"或使用chr函数chr(0x0D).chr(0x0A)),否则在单引号引起来的字符串中使用换行符的唯一其他方法是使用编辑器直接输入:
$s = 'some text before the line break
some text after';
如果需要某些特定的字符序列(例如,
),请确保检查编辑器的换行设置。
因此,如果这里没有双引号策略,那么如何最好用单引号引起来呢?
@Pacerier在单个带引号的字符串中包含回车符和换行符的唯一方法是直接通过键盘输入字符(按Enter键,具体取决于编辑器在行尾的设置)。否则,只需使用字符串连接即可。
@Gumbo:另一方面,您说的是单引号字符串,只知道转义序列\和。但是我只打印了一行echo为,并在浏览器中看到输出。它确实在我显示的两个字符串之间添加了新行。这意味着字符或
会在单引号字符串中扩展。除了这三个HTML字符外,PHP还能在单引号引起来的字符串中理解这些字符吗?恳请您相应地更新您的答案。谢谢。
@ user2839497您的发言没有任何意义。这里没有浏览器上下文。当然,浏览器在遇到
时会呈现换行符。当然,没有什么可以阻止您在单个带引号的字符串中添加
。但这不会在简单的文本文件中呈现换行符。
@Pacerier对于单引号策略,而不是像Gumbo在其注释中建议的那样在编辑器中对字符串进行换行,您可以在Gumbos答案中使用其他解决方案,例如:在单引号字符串中输出newline.chr(0x0A).。
您应该改用PHP_EOL
对于平台无关的行尾,可以使用预定义的PHP_EOL常量,如下所示:
echo $clientid, ' ', $lastname, PHP_EOL;
实际上,PHP_EOL取决于平台,因为其值取决于平台。
Gumbo,nnevala的意思是从编码的角度来看,哪个平台是哪个都没有关系。
链接到官方文档将使其成为最好的文档!
PHP中的" echo"命令将输出作为原始html发送到浏览器,因此即使使用双引号,浏览器也不会将其解析为两行,因为HTML中的换行符毫无意义。这就是为什么您需要使用:
echo [output text]."";
当使用" echo"时,或者使用fwrite ...
fwrite([output text]."
");
这将输出HTML换行符代替" n"。
以这种方式提出问题,很可能他正在将这些数据输出到文本框或javascript等中,以进行解析或纯文本阅读,而不会呈现为HTML
这是我一直在寻找的,谢谢。
好点PC3TJ ...他们正在寻找换行符,而不是换行符。接得好。
无论平台如何,都使用常量PHP_EOL获取正确的字符。
http://us3.php.net/manual/zh/reserved.constants.php
一个简单的用法示例:
$data = 'First line' . PHP_EOL .
'Second line' . PHP_EOL .
'Third line';
file_put_contents("filename.txt", $data);
?>
双引号""之间的字符串会插值,这意味着它们会将转义的字符转换为可打印的字符。
单引号''之间的字符串是文字,这意味着它们将在键入字符时被完全对待。
您可以将两者放在同一行上:
echo '$clientid $lastname ' ."
";
echo"$clientid $lastname
";
输出:
$clientid $lastname
1 John Doe
您对PHP中不同类型的字符串表示法的解释很好,因为它显示了问题作者所犯的错误。但是,您的代码示例将不会产生预期的结果,因为变量在单个带引号的字符串中使用,并且正如您所提到的,它们不会被插值!
@Damien Flament,那是我所说的-单引号之间的内容不会插值,但双引号之间的内容是插值。也许我的示例令人困惑,因为您期望看到$ clientid和$ lastname的内容,而不是文字" $ clientid"和" $ lastname"。我认为这是我在调试期间使用的表的标题。以下几行是echo"$clientid $lastname
"
我在写"预期结果"时说的是问题作者在其问题中预期的结果。将注释中显示的代码添加到答案中并显示结果可能会提高答案质量。
您应该使用此:
"
"
您可能还想看看PHP EOL。
实际上
是用于输出的html端。使用这些字符,您可以在html代码中创建换行符以使其更具可读性:
echo"First line
Second line";
将输出:
First line
Second line
查看页面将是:
First line Second line
如果您确实要这么做,则只需将单引号用" quote固定:
echo"
";
否则,如果您打算拆分文本,则在我们的示例"第一行"和"第二行"中,您必须使用html代码::
First line
Second line
将输出:
First line
Second line
另外,如果将整个脚本替换为:
echo"$clientid $lastname
";
不,不应该。因为它主要是错误的。第一个代码块将渲染为First line Second line-包括换行符在内的任何空格都将在渲染的输出中压缩为一个空格字符。另外,并非有效的HTML。
@ D_4_ni,多数民众赞成在truf。谢谢。编辑。
另外请记住,如果您使用php脚本发送文本电子邮件,则仍然需要这些行尾而不是breaks()
w3school提供了这种方式:
echo nl2br("One line.
Another line.");
通过使用此功能,您可以做到。.我尝试了上述其他方式,但它们对我没有帮助。
问题不在于在HTML中的段落中换行。关于换行符!
出于某种原因,每条有关PHP中换行符转义的帖子都没有提到仅将换行符插入单引号引起来的字符串就可以完全满足您的想法的情况:
例1。
echo 'foo
bar';
示例1显然不能打印出预期的结果,但是,尽管确实不能用单引号将换行符转义,但是您可以使用一个:
例2。
echo 'foo
bar';
示例2恰好具有所需的行为。不幸的是,插入的换行符取决于操作系统。这通常不是问题,因为Web浏览器/服务器将正确地解释换行符是 r, r n还是 n。
显然,如果您打算通过Web浏览器和其他操作系统以外的其他方式分发文件,则此解决方案并不理想。在这种情况下,您应该看到其他答案之一。
注意:使用功能丰富的文本编辑器,您应该能够将换行符作为二进制字符插入,表示在与编辑文件的操作系统不同的操作系统上的换行符。如果其他所有方法均失败,则只需使用十六进制编辑器插入二进制ascii字符即可。
使用PHP nl2br可以在文本字符串中获取换行符。
$text ="Manu is a good boy.(Enter)He can code well.
echo nl2br($text);
Result.
Manu is a good boy.
He can code well.
nl2br函数将换行符转换为 HTML标记。如果字符串不包含任何换行符,则此函数将不执行任何操作!此外,问题不在于在HTML中的段落中换行。关于换行符!
将chr(13)用于回车,并将chr(10)用于新行
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);
该解决方案可以工作,但它比过于复杂且不那么直观。
我也在单引号和双引号中尝试了这种组合。但是没有一个奏效。最好使用双引号中的而不是使用。像这样..
$variable ="and";
echo"part 1 $variable part 2
";
echo"part 1".$variable." part 2";
问题不在于在HTML中的段落中换行。关于换行符!
对于任何echo语句,我总是在双引号内使用。
问题不在于在HTML中的段落中换行。关于换行符!