用单引号在PHP中打印换行符

Mat*_*att 120 php string

我尝试尽可能使用单引号,我注意到我不能在单引号中使用\n.我知道我可以通过按回车字面输入换行符,但这会搞砸我代码的缩进.

是否有一些ASCII字符或我可以输入的东西,当我使用单引号时会生成换行符?

Ign*_*ams 137

不,因为单引号甚至禁止替换十六进制代码.

echo 'Hello, world!' . "\xA";
Run Code Online (Sandbox Code Playgroud)

  • @hakre当然,阅读手册可能会有帮助,但值得庆幸的是,StackOverflow是可以方便地准确查找这些答案的地方;) (3认同)

Cup*_*ups 98

echo 'hollow world' . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

使用常量PHP_EOL然后它也是OS独立的.

  • 您通常不应该使用PHP_EOL,因为这会使您的代码依赖于它运行的系统.例如,你的Linux服务器正在与另一台服务器通信,然后你的服务器被Windows取代......不好. (4认同)

Ant*_*ney 25

如果您使用的是echo浏览器,则可以使用以下<br/>语句:

echo 'Will print a newline<br/>';
echo 'But this wont!';
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是它更多用于终端目的..感谢您的回复. (3认同)

lee*_*ers 22

仅供参考,可以在没有双引号的情况下将换行符添加到字符串中:

printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL);
Run Code Online (Sandbox Code Playgroud)

这可能有用如果你对双引号的非理性恐惧没有界限.虽然我担心这种治疗方法可能比疾病更糟糕.

  • 我没有测试过,但我敢打赌,使用双引号比使用`printf`或字符串连接更快. (4认同)

New*_*tes 9

我想知道为什么没有人添加使用该函数的替代方法chr()

echo 'Hello World!' . chr(10);
Run Code Online (Sandbox Code Playgroud)

或者,如果你要重复一百万次,效率会更高:

define('C_NewLine', chr(10));
...
echo 'Hello World!' . C_NewLine;
Run Code Online (Sandbox Code Playgroud)

这避免了连接单引号和双引号字符串的看起来很傻的符号。


小智 8

在PHP中使用单个VS双引号是有区别的

例如:1.2 echo '$var\n'; .echo "$var\n";

  • 在1中,PHP将按字面打印: $var\n
  • 2,PHP必须在内存中搜索位置$var,并返回该位置的值,同样,它必须解析\n作为新行字符并打印该结果

我们处于百万分之一秒的范围内,但性能上存在差异.我建议你尽可能使用单引号,即使知道你也无法察觉这种性能提升.但在性能方面,我是一个偏执的开发者.

  • 快速的方法是`echo $ var +"\n";` (3认同)
  • @Hengjie:你可能意味着`echo $ var."\n" 个;`. (2认同)

Ala*_*orm 7

您可以在单引号中使用的唯一转义序列是单引号本身.

$foo = 'That\'s great';
Run Code Online (Sandbox Code Playgroud)

将单行插入到使用单引号创建的字符串中的唯一方法是插入文字换行符

$bar = 'That\'s
cheating';
Run Code Online (Sandbox Code Playgroud)