PHP中的多行字符串的几种方法

Php 2020-07-17 阅读 1667 评论 0

使用 PHP,有时候需要定义一个多行的字符串,比如 html、xml等数据。以下总结以下几种方法。

1. 单引号

echo 'You can also have embedded newlines in 
strings this way as it is
okay to do';

2. 双引号

结合换行符 \n

echo "You can also have embedded newlines in \nstrings this way as it is\nokay to do";

3. Heredoc 结构

使用 heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。

Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义,但是上文中列出的转义序列还可以使用。变量将被替换,但在 heredoc 结构中含有复杂的变量时要格外小心。

$str = <<<EOD
line1
line2
line3
EOD;
echo $str;

4. Nowdoc 结构

一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则。

就象 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的  结构是用来声明大段的不用解析的文本类似,nowdoc 结构也有相同的特征。

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
最后更新 2020-07-17
MIP.watch('startSearch', function (newVal, oldVal) { if(newVal) { var keyword = MIP.getData('keyword'); console.log(keyword); // 替换当前历史记录,新增 MIP.viewer.open('/s/' + keyword, {replace: true}); setTimeout(function () { MIP.setData({startSearch: false}) }, 1000); } }); MIP.watch('goHome', function (newVal, oldVal) { MIP.viewer.open('/', {replace: false}); });