2017-01-30 13 views
0

PHPでWebアプリケーションを構築する方法を学んでいます。しかし、私はheredocを使用してPHP内のページにいくつかのHTMLを貼り付ける際に問題を抱えています。基本的に、私はPHPは、いくつかのデータ処理とスタッフをした後HeredocがPHPで動作しない

echo $htmlPage; 

ような何かをしたいです。しかし、タイトルが示唆しているように、それは何らかの理由で動かない。そして、私はそれが私がどのようにして下されているのかを作ったのと関係があると信じる理由があります。

おかげ

$htmlPage = <<<HTML 
      <style> 
       .signup 
       { 
        border: 1px solid #999999; 
        font: normal 14px helvatica; 
        color: #444444; 
       } 
      </style> 

      <script src="form_validation.js"> 

      </script> 

     </head> 
     <body> 

      <table border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee"> 
       <th cellspan="2" align="center">Sign Up Form</th> 
       <form method="post" action="addUser.php" onsubmit="return validate(this)"> 
        <tr> 
         <td>Forename</td> 
         <td><input type = "text" maxlength="32" name="forename"/></td> 
        </tr> 

        <tr> 
         <td>Surname</td> 
         <td><input type = "text" maxlength="32" name="surname" /></td> 
        </tr> 

        <tr> 
         <td>Username</td> 
         <td><input type = "text" maxlength="16" name="username" /></td> 
        </tr> 

        <tr> 
         <td>Password</td> 
         <td><input type = "password" maxlength="12" name="password" /></td> 
        </tr> 

        <tr> 
         <td>Age</td> 
         <td><input type = "text" maxlength="3" name="age" /></td> 
        </tr> 

        <tr> 
         <td>E-mail</td> 
         <td><input type = "text" maxlength="32" name="email" /></td> 
        </tr> 

        <tr> 
         <td colspace="2" align="center"> 
         <td><input type = "submit" value="Sign Up"/></td> 
        </tr> 

       </form> 
      </table> 

     </body> 
    </html> 
HTML; 
+0

ああここでは、機能の例です。私はもっ​​と精巧にすべきだったと思う。私が持っている方法は、入力検証と入力衛生管理を実行するために、PHP(上記のコードを実行するページ)を呼び出すフォームを持つHTMLページがあることです。検証PHPページは、heredocを含む変​​数をdexlaringすることから始まります。しかし、フォームが提出されると、それは空白のページに私をもたらします。 heredoc宣言の直後に、heredocが問題であるかどうかを確認するために、処理を行う他のPHPコードの前にechoステートメントを配置しました。それは表示されていないので、私はその問題がheredocだと信じる理由がある –

+0

うん!それはそれを修正した。ハハ!ありがとう。 –

+0

さて、私はそれを答えに移しました。同意してください。以前の質問も解決された場合は、その答えも受け入れるべきです。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – chris85

答えて

1

あなたは、両方が必要とされているマニュアルあたりの終値の区切り文字の後に末尾のスペースと新しい行を持っています。

閉じる識別子の行にセミコロン(;)以外の文字は含まれていないことが重要です。これは特に、識別子がインデントされていない可能性があり、セミコロンの前後にスペースやタブがないことを意味します。また、終了識別子の前の最初の文字は、ローカルオペレーティングシステムによって定義された改行でなければならないことに気づくことも重要です。これはMac OS Xを含むUNIXシステムでは\ nです。終了デリミタの後に改行を続けなければなりません。

からhttp://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

エラー報告はunexpected end of fileを投げている必要があります。

$htmlPage = <<<HTML 
      <style> 
       .signup 
       { 
        border: 1px solid #999999; 
        font: normal 14px helvatica; 
        color: #444444; 
       } 
      </style> 

      <script src="form_validation.js"> 

      </script> 

     </head> 
     <body> 

      <table border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee"> 
       <th cellspan="2" align="center">Sign Up Form</th> 
       <form method="post" action="addUser.php" onsubmit="return validate(this)"> 
        <tr> 
         <td>Forename</td> 
         <td><input type = "text" maxlength="32" name="forename"/></td> 
        </tr> 

        <tr> 
         <td>Surname</td> 
         <td><input type = "text" maxlength="32" name="surname" /></td> 
        </tr> 

        <tr> 
         <td>Username</td> 
         <td><input type = "text" maxlength="16" name="username" /></td> 
        </tr> 

        <tr> 
         <td>Password</td> 
         <td><input type = "password" maxlength="12" name="password" /></td> 
        </tr> 

        <tr> 
         <td>Age</td> 
         <td><input type = "text" maxlength="3" name="age" /></td> 
        </tr> 

        <tr> 
         <td>E-mail</td> 
         <td><input type = "text" maxlength="32" name="email" /></td> 
        </tr> 

        <tr> 
         <td colspace="2" align="center"> 
         <td><input type = "submit" value="Sign Up"/></td> 
        </tr> 

       </form> 
      </table> 
     </body> 
    </html> 
HTML; 
echo $htmlPage; 

デモ:https://3v4l.org/bEI2B