2017-01-30 57 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