我尝试尽可能使用单引号,我注意到我不能在单引号中使用 n。 我知道我可以通过按回车字面输入换行符,但这会搞砸我代码的缩进。
是否有一些ASCII字符或我可以输入的东西,当我使用单引号时会生成换行符?
如果有人对适用于浏览器和终端(cli,命令行)的解决方案感兴趣:stackoverflow.com/a/9665253/1923625
不,因为单引号甚至禁止替换十六进制代码。
echo 'Hello, world!' ."\xA";
好的..我希望我不必诉诸于此...谢谢!
是的先生。他在10分钟内回答了这个问题。我不得不等到那时才接受,然后我忘记了哈哈。
有没有替代方案?我需要在preg_replace中使用它,我不能使用双引号。
这不是正确的推理。这不是因为在PHP中你不能用单引号表达换行符。就是这样。阅读手册本来可以帮助:)
@hakre当然,阅读本手册可能有所帮助,但幸运的是,StackOverflow可以方便地查找这些答案;)
实际上我必须纠正自己,使用单引号你可以输入chr(10)或chr(13)或通过输入恰好相同的组合。虽然可能不是那么可读... :)
谢谢你的回答,它帮助了我
@Ignacio Vazquez-Abrams请告诉我下面的print语句有什么问题:printf("%s%s%s n",$ row [0],$ row [1],$ row [2]) ;在row0,row1,row2三个值之后。它不会下一行,保持在同一行。
@Keshav1234:除了HTML布局引擎折叠空格外?
@ IgnacioVazquez-Abrams我没有得到你的要求。如果我在最后一个%s和 n之间留出一个空格,我会得到一个空格,如果我在那里给一个空间我不会得到一个空间。
唯一能解决repl.it的问题。 ,','
'在repl上不起作用。
echo 'hollow world' . PHP_EOL;
使用常量PHP_EOL然后它也是OS独立的。
PHP_EOL不起作用。 PHP 5.5.xx
适用于PHP 5.6.9
您通常不应该使用PHP_EOL,因为这会使您的代码依赖于它运行的系统。例如。你的Linux服务器正在与另一台服务器通信,然后你的服务器被Windows取代......不好。
如果您echo使用浏览器,则可以在语句中使用:
echo 'Will print a newline
';
echo 'But this wont!';
不幸的是它更多用于终端目的..感谢您的回复。
好运,祝你好运。
perrrrrrfect!
虽然帮助新手。
在纯文本电子邮件中尝试此操作;)
仅供参考,可以在没有双引号的情况下将换行符添加到字符串中:
printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL);
这可能有用如果你对双引号的非理性恐惧没有界限。虽然我担心这种治疗方法可能比疾病更糟糕。
这不是一种恐惧......当你使用单引号时,你只会获得更好的性能,所以我尝试更频繁地使用它们而不是..但是,对于这个问题,这不是一个很好的解决方案,它比它的价值更麻烦。谢谢。
我没有测试过,但我敢打赌,使用双引号比使用printf或字符串连接更快。
它并不总是非理性的,双引号可能会有问题,这取决于你想做什么。 echo 'For example, I want this to spit out php code.
echo $this->stuff;';
在PHP中使用单个VS双引号是有区别的
例如:
1. echo '$var
';
2. echo"$var
";
在1中,PHP将按字面打印:$var
在2中,PHP必须在内存中搜索$var的位置,并返回该位置的值,同样,它必须将 n解析为新行字符并打印该结果
我们处于百万分之一秒的范围内,但性能上存在差异。我建议你尽可能使用单引号,即使知道你也无法察觉这种性能提升。但在性能方面,我是一个偏执的开发者。
我赞赏你尝试搜索最好的方法,而不是使用双引号解决方案A.K.A懒惰的开发人员解决方案。
我知道做你想做的最好的方式:echo'foo'," n";
快速的方法是echo $var +"
";
@Hengjie:你可能意味着echo $var ."
";。
@linuxdev:我没有看到这个答案的重点。由于1的输出与2的输出不同(即使假设$var='$var' ...),你不是要比较苹果和橙子吗?
您可以在单引号中使用的唯一转义序列是单引号本身。
$foo = 'That\'s great';
将单行插入到使用单引号创建的字符串中的唯一方法是插入文字换行符
$bar = 'That\'s
cheating';
与其他答案相比,这是最简单的解决方案。
您可能需要考虑使用<<<
例如
<<
this is some
random text
that I'm typing
here and I will end it with the
same word I started it with
VARIABLE
更多信息请访问:http://php.net/manual/en/language.types.string.php
顺便说一句 - 某些编码环境不知道如何处理上述语法。
是啊......但是我仍然讨厌最后VARIABLE打破你代码中的所有缩进的事实......我使用HEREDOC语法遇到了很多(愚蠢的)错误
我想知道为什么没有人添加使用函数chr()的替代方法:
echo 'Hello World!' . chr(10);
或者,如果你要重复一百万次,效率更高:
define('C_NewLine', chr(10));
...
echo 'Hello World!' . C_NewLine;
这避免了连接单引号和双引号字符串的愚蠢外观。
你可以用这个:
echo 'Hello World' ."
";
如果你有一个变量:
$your_var = 'declare your var';
echo 'i want to show my var here'.$your_var.'';
不,根据文档,PHP在单引号中没有识别特殊符号。并且没有任何理由尽可能多地使用单引号
使用单引号会略微提升性能。此外,明确定义何时需要替换变量似乎是一种好习惯。
@Jackson没有性能提升。以任何方式。忘记这些幼稚的谣言。不,不是谈论变量,而是谈论特殊序列。如果你想要扩展任何序列,变量或换行符 - 使用双引号,就可以了。 OP拒绝使用它的目的是无稽之谈。