【问题标题】:How to echo lots of HTML between an IF statement如何在 IF 语句之间回显大量 HTML
【发布时间】:2016-11-18 07:06:05
【问题描述】:

目前我的PHP代码是这样的:

<?php
some code
?>

lots of HTML

<?php
some more code
?>

我现在想根据某些 PHP 变量的值包含大块 HTML,如下所示:

<?php
if ($requiresSignature===true) {
 echo "some HTML";
 echo "some more HTML";
}
?>

使用echo 可以处理几行 HTML,但是当我有 500 行 HTML 时,有没有更简单的方法,所以我不必在每行前面输入 echo

【问题讨论】:

标签: php


【解决方案1】:

你可以这样做

<?php
if ($requiresSignature===true) {
?>
 <b>some HTML</b>
 <b>some more HTML</b>
<?php
}
?>

【讨论】:

  • 我没有意识到你可以做到这一点 - 完美!
  • @AndyGroom 既然您发现这是正确的答案,那么继续前进并将其标记为正确的解决方案将是人道的。这有两个主要原因:1.) 它激励贡献者继续做好工作:因此就像给贡献者买啤酒(如果你愿意的话)。 2.) 它向任何访问者表明这是解决您的问题的解决方案,因为他们会看到绿色复选标记,上面写着:这解决了我的问题。然而;这不是强制性的 - 只是表示善意 - 考虑到贡献者投入了时间和精力来提供帮助,而且它不会花费你任何成本 ;-)
  • 哈哈你是对的但也许他忘记了..让我们拭目以待哈哈:)
【解决方案2】:

对于这种用法,在我看来,php 的 heredocnowdoc 功能是最好的选择。

赫雷多克

Heredocecho "Foo bar"; 类似,但适用于跨越多行的大量文本。

像这样:

echo <<<FOO
    <h1>Foo bar</h1>
    <p>Lorem ipsum dolor sit tenet conseqteur...</p>
    <i>Created by $name</i>
FOO;

此语法也可用于设置变量、类属性、类常量和静态变量(从 php 5.3 开始)。 FOO部分,你可以自己设置。请记住将 Heredoc 单独以同一行结尾(绝对没有缩进)以分号结尾。

例如

$foo = <<<BAR
    This is an example text.
    Spanning multiple lines.
BAR;

Nowdoc

将 Nowdoc 视为 ' 等效于 "。也就是说,在 Nowdoc 语句中不执行任何变量替换,就像在 'single quoted string' 中不执行任何变量替换一样。

语法是这样的:

echo <<<'EXAMPLE'
    This

    is
    a
    test
EXAMPLE;

总之我会这样做:

if ($requiresSignature===true) {
    echo <<<HTML
    Some html<br/>
    And even more <b class="html">html</b>
HTML;
}

【讨论】:

    【解决方案3】:
    echo '
        some html
        some html
        some html
    ';
    

    我想这就是你要找的东西

    【讨论】:

      【解决方案4】:

      试试这个

      <?php
      if (true){
        ?>
      
      pure html code here
      
      <?php
      
      else{
      
      ?>
      
      pure html code here
      

      【讨论】:

        【解决方案5】:

        试试这个

        <?php
            $Html = '';
            if ($requiresSignature===true) {
                $Html .="some HTML";
                $Html .="some more HTML";
                echo $Html;
            }  
        ?>
        

        【讨论】:

          【解决方案6】:

          您可以使用 heredoc 语法:在here 中查看更多详细信息

          echo <<<"MYHTML"
          html
          lots of html
          MYHTML;
          

          【讨论】:

            【解决方案7】:

            这项工作适合你

             <?php if( var == true ): ?>
            
             <p>Your HTML</p> 
            
             <?php endif; ?>
            

            【讨论】:

              【解决方案8】:

              很有用,试试这个代码:

              <?php
                 if ($requiresSignature===true) {
                    $var = "some HTML";
                    $var .=  "some more HTML";
                    echo $var;
              }
              ?>
              
              **OR**
              
              <?php if ($requiresSignature===true) { ?>
              
              HTML CODE
              
              <?php } ?>
              

              【讨论】:

                【解决方案9】:

                试试这个方法,

                <?php
                $Html = "";
                if ($requiresSignature===true) {
                 $Html .="some HTML";
                 $Html .="some more HTML";
                
                 echo $Html;
                }
                ?>
                

                【讨论】:

                • 它会抛出未定义的变量:Html
                • @RajkumarR 答案已编辑。为 $Html 设置一些默认值
                【解决方案10】:

                您不需要将 echo 写入每一行。

                你应该使用:

                echo '
                    some html
                    some more html
                    some more html
                ';
                

                【讨论】:

                  【解决方案11】:

                  PHP 是一种 HTML 嵌入语言。您可以在您的 php 页面的任何地方尝试它。

                  <?php if ($requiresSignature===true): ?>
                  <p>"some more HTML"</p>
                  <?php endif;?>
                  

                  【讨论】:

                    【解决方案12】:

                    ...但是当我有大约 500 行 HTML 时有没有更简单的方法,所以我不必在每行前面输入 echo? 事实证明,所以是的,方法如下:

                        <?php
                            $myString  = "PHP is so cool...";
                            if($requiredSignature === true): 
                        ?>
                        <div class='too-much-html-markup'>
                            All the RAW HTML MARKUP here would only be displayed if (and only if) 
                            the condition above evaluates to true so i don't have to worry about 
                            any kind of echoing. However, i can still go ahead and echo some
                            content here if i still choose like this: <?php echo $myString; ?>
                            And everything will still work out just fine.
                        </div>
                        <?php else: ?>
                        <div class='still-some-raw-html-in-else-clause'>
                            Again this is a raw Markup and will only be rendered if the IF 
                            condition above evaluates to FALSE!
                        </div>
                        <?php endif; //<== NOW I END THE CONDITIONAL LOGIC WITH endif KEYWORD ?>     
                    

                    【讨论】:

                      【解决方案13】:

                      以纯 HTML 格式输出变量,考虑这样做:

                      <?= $variable ?>
                      

                      <?php echo $variable; ?>
                      

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-02-09
                        • 1970-01-01
                        • 1970-01-01
                        • 2023-02-26
                        • 2013-05-09
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多