我很好奇以下原因:
无错误地工作:
$contact_data = <<<STRING
<contact>
<Group_Tag name="Contact Information">
<field name="First Name">$contact_first_name</field>
<field name="Last Name">$contact_last_name</field>
<field name="Email">$contact_email</field>
</Group_Tag>
</contact>
STRING;
返回错误:
$contact_data = <<<STRING
<contact>
<Group_Tag name="Contact Information">
<field name="First Name">$contact_first_name</field>
<field name="Last Name">$contact_last_name</field>
<field name="Email">$contact_email</field>
</Group_Tag>
</contact>
STRING;
错误:
Parse error: syntax error, unexpected end of file.
正如您所看到的,唯一的区别是第二种情况是缩进的(4个空格),而第一种情况则不是。我很好奇为什么......
答案 0 :(得分:2)
基本HEREDOC:终结者 HAS 位于该行的开头:
echo <<<EOL
foo
EOL; // ok, terminator in column 0
echo <<<EOL
foo
EOL; // bad, there's whitespace before the terminator
这是一个例外,但最好假装它不存在,并且总是将终结符字符串放在行的开头。
答案 1 :(得分:1)
您的字符串分隔符必须出现在第1列中,如下所示:
$contact_data = <<<STRING
<contact>
<Group_Tag name="Contact Information">
<field name="First Name">$contact_first_name</field>
<field name="Last Name">$contact_last_name</field>
<field name="Email">$contact_email</field>
</Group_Tag>
</contact>
STRING;