ヒアドキュメントの中ではタブを使ってはいけない

PHPではまったので、記載しておきます。

PHPXMLの処理についてPHP 開発者のための XML: 第 1 回 PHP での XML を 15 分で学ぶを参考に学習をしていたのですが、どうもヒアドキュメントを使用する箇所でパースエラーになり、うまくよみこめない。私の環境はOSX 10.5で、XAMPPもMAMPもローカルのApacheでも同様にパースエラーとなりました。 ヒアドキュメントができない。 - BIGLOBEなんでも相談室を見つけたので、文字コードと改行の問題かと思ったのですが、色々試しても解決しない。同様のエラーが出ていらっしゃる方がいたようでDo You PHP? - BBSに解決方法が記載されていました。

なぜこのようなパースエラーが生じていましたかというと、これは私が以下のように「Tab」を使用していたためです。

			$here_document = <<<EOD
			<tr><td>ヒア文字列</td><td>$greeting\n</td></tr>
			EOD;

「Tab」を使用することによって、何故か空白が出来てしまう。このように解釈されてしまう。これが原因だったようです。

ということのようです。私が参考にしていたPHP 開発者のための XML: 第 1 回 PHP での XML を 15 分で学ぶのソースをコピーするとヒアドキュメンとの箇所にtabが入っていたようです。

<?php 
  $xmlstr = <<<XML 
  <books> 
  <book> 
   <title>Great American Novel</title> 
   <characters> 
    <character> 
     <name>Cliff</name> 
     <desc>really great guy</desc> 
    </character> 
    <character> 
     <name>Lovely Woman</name> 
     <desc>matchless beauty</desc> 
    </character> 
    <character> 
     <name>Loyal Dog</name> 
     <desc>sleepy</desc> 
    </character> 
   </characters> 
   <plot> 
    Cliff meets Lovely Woman.  Loyal Dog sleeps, but wakes up to bark 
    at mailman. 
   </plot> 
   <success type="bestseller">4</success> 
   <success type="bookclubs">9</success> 
  </book> 
  </books> 
XML; 
 ?>


また、閉じタグの後ろに半角スペースが入っているのも、パースエラーになるようで、タブと半角スペースを削除して、次のように書き換えることで、無事にヒアドキュメンとが動作するようになりました。

<?php 
$xmlstr = <<<XML
<books>
<book>
<title>Great American Novel</title>
<characters>
<character>
<name>Cliff</name>
<desc>really great guy</desc>
</character>
<character>
<name>Lovely Woman</name>
<desc>matchless beauty</desc>
</character>
<character>
<name>Loyal Dog</name>
<desc>sleepy</desc>
</character>
</characters>
<plot>
Cliff meets Lovely Woman.  Loyal Dog sleeps, but wakes up to bark
at mailman.
</plot>
<success type="bestseller">4</success>
<success type="bookclubs">9</success>
</book>
</books>
XML;
?>

勉強にはなりましたが、こういう所で、はまるとつらいですね。