在解析PHP的变量中解析错误

时间:2012-08-17 20:07:14

标签: php

以下是我目前使用的代码:     

  $form = "
  <form action='echo htmlentities($_SERVER["PHP_SELF"]);' method='post'>
  <table>
  <tr>
  <td>Username</td>
  </td><input type='text' name='user' value='$getuser' /></td>
  </tr>
  </table>
  </form>";

  ?>

上面的代码给了我这个错误:

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in ... on line 27

如果我将此更改为["PHP_SELF"]到此['PHP_SELF'],那么我会收到此错误:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in ... on line 27

如何修复上面的表单操作,以便它停止返回并显示解析错误?

4 个答案:

答案 0 :(得分:6)

从以下位置更改:

<form action='echo htmlentities($_SERVER["PHP_SELF"]);' method='post'>

为:

<form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>

您正在使用双引号字符串构建HTML;所以当PHP看到分隔"PHP_SELF"的双引号时,它假设第一个终止你的字符串。然后它尝试解析PHP_SELF,但不能这样做。

请参阅字符串上的documentation以获取进一步参考。

答案 1 :(得分:4)

变化:

<form action='echo htmlentities($_SERVER["PHP_SELF"]);' method='post'>

<form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>

您已经使用PHP并构建字符串,因此不需要字符串中的回声。

答案 2 :(得分:4)

删除$form变量并将HTML代码放在结束的PHP括号之外:

<?php
//php code

?>

<form action="<?php echo htmlentities($_SERVER["PHP_SELF"]);?>" method="post">
<table>
<tr>
<td>Username</td>
</td><input type='text' name='user' value='<?php echo $getuser; ?>' /></td>
</tr>
</table>
</form>

答案 3 :(得分:2)

您忘记在此行使用.在PHP中进行连接

<form action='echo htmlentities($_SERVER["PHP_SELF"]);' method='post'>

你应该写

<form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>