PHP中的多行字符串

The*_*Kid 116 php string

考虑:

$xml = "l";
$xml = "vv";

echo $xml;
Run Code Online (Sandbox Code Playgroud)

这将回应vv.为什么以及如何为SimpleXML之类的东西做多行字符串?

Mad*_*iha 229

好,

$xml = "l
vv";
Run Code Online (Sandbox Code Playgroud)

作品.

您还可以使用以下内容:

$xml = "l\nvv";
Run Code Online (Sandbox Code Playgroud)

要么

$xml = <<<XML
l
vv
XML;
Run Code Online (Sandbox Code Playgroud)

根据评论进行编辑:

您可以使用.=运算符连接字符串.

$str = "Hello";
$str .= " World";
echo $str; //Will echo out "Hello World";
Run Code Online (Sandbox Code Playgroud)

  • @TheBlackBenzKid:嗯...什么? (71认同)
  • 你忘了我是否在循环之间有循环或MySQL.谢谢 (5认同)
  • @Pacerier你问为什么我们需要打扰heredoc而不是引号.这就是为什么.两者都是多行字符串的选项. (5认同)
  • 看我编辑的答案.使用`.=`将字符串添加到一起. (4认同)
  • @Pacerier您无需在heredoc中转义引号。 (2认同)

Dan*_*ich 116

PHP有Heredoc和Nowdoc字符串,这是处理PHP中多行字符串的最佳方法.

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
$var is replaced automatically.
EOD;
Run Code Online (Sandbox Code Playgroud)

Nowdoc就像一个Heredoc,但它并没有取代变量.

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
$var is NOT replaced in a nowdoc.
EOD;
Run Code Online (Sandbox Code Playgroud)

请注意,结束标记EOD一定不能缩进,否则PHP不会对其进行确认.此外,您不必使用" EOD"; 它可以是你想要的任何字符串.

  • Upvoted因为我总是忘记缩进. (6认同)

Xav*_*eve 9

另一种解决方案是使用输出缓冲,您可以收集正在输出/回显的所有内容并将其存储在变量中。

<?php
ob_start(); 

?>line1
line2
line3<?php 

$xml = ob_get_clean();
Run Code Online (Sandbox Code Playgroud)

请注意,对于这种情况,输出缓冲可能不是性能和代码清洁度方面的最佳解决方案,但值得留在这里以供参考。


小智 9

PHP 有两个内置方法 HEREDOC 和 NOWDOC 来处理多行字符串。HEREDOC 也有语法 <<<。

这是使用 HEREDOC 的多行 PHP 字符串的示例,

<?php
echo <<<EOT
My name is BB. I am printing some Text.
Now, I am printing SECOND LINE.
This should print a capital 'A': \x41
EOT;
?>
Run Code Online (Sandbox Code Playgroud)

注意如果您想使用本地服务器检查上述代码的正确输出,则必须在 CMD 或 XAMPP Shell 上运行完整的代码。


Rya*_*yan 8

$xml="l" . PHP_EOL;
$xml.="vv";
echo $xml;
Run Code Online (Sandbox Code Playgroud)

回声:

l
vv
Run Code Online (Sandbox Code Playgroud)

有关PHP_EOL的文档.


ese*_*elk 6

不知道它是如何按性能堆叠的,但是对于无关紧要的地方,我喜欢这种格式,因为我可以确定它使用的是\ r \ n(CRLF),而不是我的PHP文件使用的任何格式保存在。

$text="line1\r\n" .
      "line2\r\n" .
      "line3\r\n";
Run Code Online (Sandbox Code Playgroud)

这也让我缩进了我想要的。