如果缩进,XML格式的PHP字符串将返回解析错误?

时间:2014-10-27 15:44:37

标签: php xml parsing

我很好奇以下原因:

无错误地工作:

$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个空格),而第一种情况则不是。我很好奇为什么......

2 个答案:

答案 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;