2017-01-30 54 views
0

我正在學習使用PHP構建Web應用程序。但是,我一直在使用heredocs將一些HTML從PHP內部粘貼到頁面中。基本上,我想做類似Heredoc不能在PHP中工作

echo $htmlPage; 

PHP做了一些數據處理和東西。但是,正如標題所示,由於某種原因,它不起作用。我有理由相信這與我如何製作heredoc有關,這可以在下面看到。

感謝

$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

哦。我想我應該詳細闡述一下。我擁有它的方式是我有一個HTML頁面,其中包含一個表單,用於調用我的PHP(以上代碼所取自的頁面)來執行輸入驗證和輸入衛生。驗證PHP頁面首先通過對包含heredoc的變量進行dexlaring。但是,當表單提交時,它會將我帶到一個空白頁面。我在我的任何其他處理代碼的PHP代碼之前的heredoc聲明之後放置了一個echo聲明,以查看heredoc是否是問題。既然它沒有顯示,我有理由相信這個問題是heredoc –

+0

是!這解決了它。哈哈!謝謝。 –

+0

好的,我已將其移至答案。請接受它。如果你以前的問題也解決了,你也應該接受這個答案。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – chris85

回答

1

你有一個尾隨空格,每個都需要手動關閉定界符之後沒有新的生產線。

需要注意的是,關閉標識符的行必須不包含除分號(;)之外的其他字符。這意味着特別是標識符可能不會縮進,並且在分號之前或之後可能沒有任何空格或製表符。認識到關閉標識符之前的第一個字符必須是由本地操作系統定義的換行符也很重要。在UNIX系統上這是\ n,包括Mac OS X.結束分隔符後面還必須跟有一個換行符。

- 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