ヒアドキュメントでHTML分を出力する [PHP]

2021-07-07

複数行あるHTMLタグをヒアドキュメントを使って出力する

phpでHTML分を出力する場合、ヒアドキュメントを使うと便利です。
下記が簡単なサンプルです

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
$html = <<<EOD
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test Page</title>
</head>
<body>
<h1>Test Page</h1>
<p>ヒアドキュメントで、<br>
テキスト出力するサンプル</p>
</body>
</html>
EOD;
echo $html;
?>
<?php $html = <<<EOD <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Test Page</title> </head> <body> <h1>Test Page</h1> <p>ヒアドキュメントで、<br> テキスト出力するサンプル</p> </body> </html> EOD; echo $html; ?>
<?php
 
$html = <<<EOD
 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test Page</title>
</head>
<body>
<h1>Test Page</h1>
<p>ヒアドキュメントで、<br>
テキスト出力するサンプル</p>
</body>
</html>
 
EOD;
 
echo $html;
?>

ブラウザでアクセスすると以下のような感じで出力されます

EOD」で囲まれた部分がHTMLタグとして扱われます。また、改行やタブをそのまま扱われます。

ヒアドキュメントを扱う場合にエラーになるケース

ヒアドキュメントを使う場合にエラーになるケースがあります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EOD ;
echo $html;
EOD ; echo $html;
EOD ;
 
echo $html;

上記のように、「EOD」と「;」の間にスペースが有る場合は、以下のようなエラーになります

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PHP Parse error: syntax error, unexpected end of file in /var/www/html/test.php on line 21
PHP Parse error: syntax error, unexpected end of file in /var/www/html/test.php on line 21
PHP Parse error: syntax error, unexpected end of file in /var/www/html/test.php on line 21

また、「EOD;」の前にタグを入れた場合も同じようなエラーになります

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EOD ;
echo $html;
EOD ; echo $html;
        EOD ;

echo $html;
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PHP Parse error: syntax error, unexpected end of file in /var/www/html/test.php on line 21
PHP Parse error: syntax error, unexpected end of file in /var/www/html/test.php on line 21
PHP Parse error: syntax error, unexpected end of file in /var/www/html/test.php on line 21

 

上記のエラーの場合は、以下のような原因でエラーとなっています

  • 「EOD」と「;」の間には、空白、タブ、制御コードを入れてはいけない
  • 「EOD;」の前にはタブやスペースなどでインデントを入れてはいけない

スポンサーリンク

0
0