PHP中的多行字符串

时间:2012-03-16 20:37:05

标签: php string

考虑:

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

echo $xml;

这将回显 vv 。为什么以及如何为SimpleXML之类的内容执行多行字符串?

9 个答案:

答案 0 :(得分:202)

那么,

$xml = "l
vv";

作品。

您还可以使用以下内容:

$xml = "l\nvv";

$xml = <<<XML
l
vv
XML;

根据评论进行编辑:

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

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

答案 1 :(得分:96)

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;

Nowdoc就像一个Heredoc,但它不会取代变量。

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

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

答案 2 :(得分:8)

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

将回应:

l
vv

PHP_EOL上的文档。

答案 3 :(得分:5)

不确定它在性能方面是如何叠加的,但对于那些并不重要的地方,我喜欢这种格式,因为我可以确定它是使用\ r \ n(CRLF)而不是我的PHP文件的任何格式碰巧保存在。

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

它也允许我缩进,但我想要。

答案 4 :(得分:2)

也许尝试“。=”而不是“=”?

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

会给你“lvv”;

答案 5 :(得分:1)

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

<?php
ob_start(); 

?>line1
line2
line3<?php 

$xml = ob_get_clean();

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

答案 6 :(得分:1)

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;
?>

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

答案 7 :(得分:0)

$xml="l\rn";
$xml.="vv";

echo $xml;

但你应该真正研究http://us3.php.net/simplexml

答案 8 :(得分:0)

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

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

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

将字符串“l”和“vv”分别放在echo中的不同行:

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

在这个实例中你不需要多个字符串,因为换行符\n将为你处理。

将字符串“l”和“vv”放在代码中的单独行上并在回显时:

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