如何在php var中回显表单而不会丢失编辑器突出显示语法

时间:2010-08-11 07:03:54

标签: php

我一直在尝试像这样的heredoc方法:

<?php  echo $form = <<<HTML ?>  

here follows the html...
<form method="post" >
<table border="0" cellpadding="0"  cellspacing="0" id="reserv_table">
<tr>
<td><span id="message"><b>for you : 9€</b> &nbsp;</span></td>
<td><input type="text" name="_membre" id="_membre" style="width: 40px;" class="text disabled" disabled="disabled" /></td>
<td valign="top">
<table>
<tr> 


<?php HTML; ?> 

但是我收到了错误。

6 个答案:

答案 0 :(得分:4)

如果您只是回显表单,则甚至不需要PHP的heredoc语法。使用结束分隔符突破PHP,然后在输出HTML表单后返回PHP。

编辑:好的,所以您需要将表单输出存储在变量中,但是您还希望将其打印到浏览器中?没问题,请使用output buffering(特别是ob_start()ob_get_flush()

<?php

// Begin output buffering
ob_start();

// Break out of PHP...

?>

<form method="post" >
<table border="0" cellpadding="0"  cellspacing="0" id="reserv_table">
<tr>
<td><span id="message"><b>for you : 9€</b> &nbsp;</span></td>
<td><input type="text" name="_membre" id="_membre" style="width: 40px;" class="text disabled" disabled="disabled" /></td>
<td valign="top">
<table>
<tr> 

<?php

// Back to PHP, store the HTML in $form AND print it to the browser
$form = ob_get_flush();

?>

答案 1 :(得分:2)

您的PHP代码<?php?>正在弄乱您的Heredoc代码。

  • 删除第一行末尾的?>
  • 删除<?php和最后一行开头的空格
  • 删除空格和最后一行末尾的?>并将其放在下面一行

这都是假设您需要将所有代码放入$form变量中的某些原因。如果你不这样做,请选择BoltClock的答案。

如果在修复代码后,编辑器不会正确地突出显示语法,那么编辑器就会出错。您可以使用其他编辑器替换它,或者只是避免使用Heredoc语法。我倾向于避免使用Heredoc,但主要是因为我觉得它让事情变得混乱。

答案 2 :(得分:0)

为什么不根据它syntax rules尝试heredoc?

虽然要打印出这张表格,但你不需要heredoc 按原样打印出来

here follows the html...
<form method="post" >
<table border="0" cellpadding="0"  cellspacing="0" id="reserv_table">
<tr>
<td><span id="message"><b>for you : 9€</b> &nbsp;</span></td>
<td><input type="text" name="_membre" id="_membre" style="width: 40px;" class="text disabled" disabled="disabled" /></td>
<td valign="top">
<table>
<tr> 

答案 3 :(得分:0)

为什么不直接删除像这样的PHP代码

<form method="post" >
<table border="0" cellpadding="0"  cellspacing="0" id="reserv_table">
<tr>
<td><span id="message"><b>for you : 9€</b> &nbsp;</span></td>
<td><input type="text" name="_membre" id="_membre" style="width: 40px;" class="text disabled" disabled="disabled" /></td>
<td valign="top">
<table>
<tr>

平均不需要回声

答案 4 :(得分:0)

如果您需要发送静态数据,可以将其直接放在PHP标记之外的代码中

例如:

   <?php 
     echo "PHP Code";
   ?>
     HTML code

   <?php
     echo "PHP Code again";
   ?>

此外,如果您想要创建PHP字符串,则需要保留PHP代码中的所有内容

例如:

   <?php 
     echo "PHP Code";
     $heredoc_variable = <<<HTMLCODE
       <b> This is html code into a heredoc variable in php </b>
     HTMLCODE;
   ?>

答案 5 :(得分:-1)

如果你真的需要它作为变量并且正在寻找一个非常简单的方法,那么只需将整个表单语法包含在带有转义引号的变量中,如下所示:

<?php

$output = "
<form method=\"post\" >
<table border=\"0\" cellpadding=\"0\"  cellspacing=\"0\" id=\"reserv_table\">
<tr>
<td><span id=\"message\"><b>for you : 9€</b> &nbsp;</span></td>
<td><input type=\"text\" name=\"_membre\" id=\"_membre\" style=\"width: 40px;\" class=\"text disabled\" disabled=\"disabled\" /></td>
<td valign=\"top\">
<table>
<tr>
";

echo $output; //or wherever you need to echo it...

?>

这个方法是一个简单的解决方案,必须使用比ob_start()更少的资源;在我看来。