【发布时间】:2012-04-02 09:43:07
【问题描述】:
【问题讨论】:
-
你想让它在下一行回显“l”和“vv”吗?
-
查找
concatenation。当你把字符串放在一起时,这就是所谓的。 -
@haywire 成为 Google 上第一个有用的结果。
【问题讨论】:
concatenation。当你把字符串放在一起时,这就是所谓的。
嗯,
$xml = "l
vv";
工作。
您还可以使用以下内容:
$xml = "l\nvv";
或
$xml = <<<XML
l
vv
XML;
您可以使用.= 运算符连接字符串。
$str = "Hello";
$str .= " World";
echo $str; //Will echo out "Hello World";
【讨论】:
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 7.3 之前,结束标识符 EOD 绝对不能缩进,否则 PHP 不会承认它。在 PHP 7.3 及更高版本中,EOD 可以使用空格或制表符缩进,在这种情况下,heredoc/nowdoc 字符串中的所有行都会取消缩进。
【讨论】:
不确定它在性能方面的表现如何,但对于那些并不重要的地方,我喜欢这种格式,因为我可以确定它使用的是 \r\n (CRLF) 而不是我的 PHP 文件的任何格式正好保存在里面。
$text="line1\r\n" .
"line2\r\n" .
"line3\r\n";
它还可以让我随意缩进。
【讨论】:
【讨论】:
另一种解决方案是使用output buffering,您可以收集正在输出/回显的所有内容并将其存储在变量中。
<?php
ob_start();
?>line1
line2
line3<?php
$xml = ob_get_clean();
请注意,在这种情况下,就性能和代码清洁度而言,输出缓冲可能不是最佳解决方案,但值得将其留在这里以供参考。
【讨论】:
也许试试“.=”而不是“=”?
$xml="l";
$xml.="vv";
会给你“lvv”;
【讨论】:
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 上运行完整的代码。
【讨论】:
将字符串“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;
【讨论】:
$xml="l\rn";
$xml.="vv";
echo $xml;
但你真的应该看看http://us3.php.net/simplexml
【讨论】: