PHP中的多行字符串


141

考虑:

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

echo $xml;

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


1
是否要在下一行回显“ l”和“ vv”?
Mike Samuel

3
抬头concatenation。这就是您将字符串放在一起时所称的名称。
Crashspeeder 2012年

14
@haywire成为Google上第一个有用的结果。
Cees Timmerman

Answers:


262

好,

$xml = "l
vv";

作品。

您还可以使用以下内容:

$xml = "l\nvv";

要么

$xml = <<<XML
l
vv
XML;

根据评论进行编辑:

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

$str = "Hello";
$str .= " World";
echo $str; //Will echo out "Hello World";

5
您忘记了我之间是否存在循环或MySQL while循环。谢谢
TheBlackBenzKid 2012年

89
@TheBlackBenzKid:嗯...什么?
马达拉的鬼魂2012年

1
例。while($ rc = mysql_fetch_array($ adviews)){$ xml。=“ <设置名称='”。$ rc [“ date”]。“'value ='1'hoverText ='”。$ rc [“ date” ]。“'/>”; } $ xml。=“ </ graph>”;
TheBlackBenzKid 2012年

3
@Pacerier您无需在Heredoc内转义引号。
Madara's Ghost

7
@Pacerier您问为什么我们需要在报价单上打扰Heredoc。这就是为什么。两者都是多行字符串的选项。
马达拉的幽灵2015年

139

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

http://php.net/manual/zh/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;

Nowdoc就像Heredoc,但是它不能替换变量。

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
$var is NOT replaced in a nowdoc.
EOD;

注意,结束令牌EOD绝对不能缩进,否则PHP不会承认它。另外,您不必使用“ EOD”;它可以是您想要的任何字符串。


8
因为我总是忘了缩进,所以提出了建议。
Matuszek '16


8

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

$text="line1\r\n" .
      "line2\r\n" .
      "line3\r\n";

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


5

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

<?php
ob_start(); 

?>line1
line2
line3<?php 

$xml = ob_get_clean();

请注意,就这种确切情况而言,就性能和代码清洁度而言,输出缓冲可能不是最佳的解决方案,但值得在此处参考。




0

仅在代码中将字符串“ l”和“ vv”放在单独的行中:

$xml = "l";
$xml .= "vv"
echo $xml;

在这种情况下,您要说的是将.=字符串附加到该字符串变量的上一版本的末尾。请记住,=只是一个赋值运算符,因此在您的原始代码中,您正在为变量分配一个新的字符串值。

仅在回显中将字符串“ l”和“ vv”放在单独的行中:

$xml = "l\nvv"
echo $xml;

在这种情况下,您不需要多个字符串,因为换行符\n将为您处理。

将字符串“ l”和“ vv”放在代码中以及回显时的不同行上:

$xml = "l";
$xml .= "\nvv"
echo $xml;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.