【问题标题】:Echo block of HTML that contains PHP functions包含 PHP 函数的 HTML 回声块
【发布时间】:2009-07-23 03:19:59
【问题描述】:

我有一个简单的 if-else 语句——如果为真,我希望它回显这个内容:

<div id="login">
  <h2>Login</h2>
  <div class="box">
    <form method="POST" action="index.php/login">
      Username/Email:<br />
      <input type="text" name="username" value="<?php echo set_value("username"); ?>" size="50" class="form" />
      <?php echo form_error("username"); ?>
      Password:<br />
      <input type="password" name="password" value="<?php echo set_value("password"); ?>" size="50" class="form" />
      <?php echo form_error("password"); ?>
      <input type="submit" value="Login" name="login" />
    </form>
  </div>
</div>

如果 false 做类似的事情。

我应该如何处理这个问题?我是一个 PHP 菜鸟(我一直在惹恼这里的社区!)--所以我现在站在 echo 函数前--我想我可以设置变量,但仅此而已。

非常感谢!

【问题讨论】:

    标签: php echo


    【解决方案1】:

    和你一直在做的一样:

    
    <?php
    if some_condition
    {
    ?>
        <p> I am inside the true condition due : <?php echo "true on condition" ?> </p>
    <?
    }
    else
    {
    ?>
        <p> I am inside the false condition due : <?php echo "false on condition" ?> &lt/p>
    <?
    }
    ?>
    
    

    【讨论】:

      【解决方案2】:

      您可以简单地在 if/else 语句中跳出 PHP。

      if(true)
      {
          ?>
          Regular HTML Here
          <?php
      }
      else
      {
          ?>
          Regular HTML Here
          <?php
      }
      

      您可以随时使用'?>' 操作符跳出PHP,并且使用任何控制结构,它都应该显示代码,就像您回显它一样。另一种选择是使用输出缓冲。

      if(true)
          {
              ob_start();
      
              ?>
              Regular Code Here
              <?php
      
              $contents = ob_get_contents();
              ob_end_clean();
          }
      

      这会将开始和结束之间输出的内容保留在 $contents 中。

      最后,您可以使用 include() 仅在您真正需要时才包含您的登录表单。 (我更喜欢这种方法,因为我可以很容易地将登录表单放在网站上几乎任何地方)

      if(true)
      {
          include('loginform.php');
      }
      

      【讨论】:

      • 呃,我的服务器不允许“包含”。
      • 这真的很奇怪哈哈。您始终可以调用放置在输出登录表单的代码底部附近某处的函数。 (您也可以在函数中跳出 PHP,就像第一个示例一样)
      【解决方案3】:
      <?php if ($condition) { ?>
      
          <div id="login">
            <h2>Login</h2>
            <div class="box">
              <form method="POST" action="index.php/login">
                Username/Email:<br />
                <input type="text" name="username" value="<?php echo set_value("username"); ?>" size="50" class="form" />
                <?php echo form_error("username"); ?>
                Password:<br />
                <input type="password" name="password" value="<?php echo set_value("password"); ?>" size="50" class="form" />
                <?php echo form_error("password"); ?>
                <input type="submit" value="Login" name="login" />
              </form>
            </div>
          </div>
      
      <?php } else { ?>
      
          other html here
      
      <?php } ?>
      

      【讨论】:

        【解决方案4】:

        只是一个建议;为了可读性和灵活性,最好先将要显示的内容放在变量中。

        $html = "<form method='post' action='?'> ...... ";
        
        if ($condition)
           $html .= "Error"
        else
           $html .= "No problem"
        ....
        
        <html>
          <body>
            <?php
              echo $html;
            ?>
           </body>
        </html>
        

        或者您可以使用模板。我推荐的一个是EasyTemplate

        【讨论】:

          【解决方案5】:

          有一种形式的 php 条件语句更容易阅读,使用冒号而不是

          <?php if ($condition) { ?>
          ...html
          <?php } else { ?>
          ...html
          <?php } endif; ?>
          

          你会的

          <?php if ($condition) : ?>
          ...html
          <?php else : ?>
          ...html
          <?php endif; ?>
          

          如果你的配置允许,你可以简写

          <?= $variable ?>
          

          而不是

          <?php echo($variable); ?>
          

          【讨论】:

            【解决方案6】:

            退出 php 是最简单的方法。我发现使用alternate control structures 使这种代码比搁置的花括号更具可读性,尤其是在您有大量 html 的情况下。

            <?php if (!$logged_in): ?>
            
                <div id="login">
                  <h2>Login</h2>
                  <div class="box">
                    <form method="POST" action="index.php/login">
                      Username/Email:<br />
                      <input type="text" name="username" value="<?php echo set_value("username"); ?>" size="50" class="form" />
                      <?php echo form_error("username"); ?>
                      Password:<br />
                      <input type="password" name="password" value="<?php echo set_value("password"); ?>" size="50" class="form" />
                      <?php echo form_error("password"); ?>
                      <input type="submit" value="Login" name="login" />
                    </form>
                  </div>
                </div>
            
            <?php else: ?>
            
                // display html for a logged-in user
            
            <?php endif; ?>
            

            【讨论】:

              【解决方案7】:

              使用类似的东西

              回显 htmlentities($string);

              htmlentities

              将字符串设置为要输出的html代码。

              【讨论】:

              • 对不起,我的错。我以为你希望输出是代码。
              猜你喜欢
              • 2016-04-07
              • 2017-07-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-15
              • 2015-07-02
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多