代码之家  ›  专栏  ›  技术社区  ›  Robin Rodricks

如何在PHP中回显HTML?

  •  109
  • Robin Rodricks  · 技术社区  · 16 年前

    我想有条件地输出HTML来生成一个页面,那么用php 4+回送HTML的多行代码片段的最简单方法是什么?我需要使用像smarty这样的模板框架吗?

    echo '<html>', "\n"; // I'm sure there's a better way!
    echo '<head>', "\n";
    echo '</head>', "\n";
    echo '<body>', "\n";
    echo '</body>', "\n";
    echo '</html>', "\n";
    
    12 回复  |  直到 7 年前
        1
  •  247
  •   Community CDub    8 年前

    有几种方法可以在PHP中回显HTML。

    1。在php标记之间

    <?php if(condition){ ?>
         <!-- HTML here -->
    <?php } ?>
    

    2。回声中

    if(condition){
         echo "HTML here";
    }
    

    对于echos,如果您希望在HTML中使用双引号,则必须使用单引号echos,如下所示:

    echo '<input type="text">';
    

    或者你可以这样逃离他们:

    echo "<input type=\"text\">";
    

    三。遗传基因

    4。nowdocs(从php 5.3.0开始)

    模板引擎 用于在主要包含HTML的文档中使用PHP。实际上,PHP的最初目的是成为一种模板语言。这就是为什么使用PHP,您可以使用短标记来回送变量(例如 <?=$someVariable?> )

    还有其他模板引擎(如smarty、twig等)使语法更加简洁(如 {{someVariable}} )

    使用模板引擎的主要好处是将设计(表示逻辑)与编码(业务逻辑)分开。从长远来看,它还使代码更干净、更容易维护。

    如果您还有任何问题,请随时发表评论。 在 PHP Documentation .

    上帝保佑!


    注: PHP短标签 <? ?> 不鼓励使用,因为它们仅在启用时才可用 short_open_tag php.ini配置文件指令,或者如果php是用 --enable-short-tags 选择权。 They are available, regardless of settings from 5.4 onwards .

        2
  •  62
  •   lfx    16 年前

    尝试这样:

    $variable = <<<XYZ
    <html>
    <body>
    
    </body>
    </html>
    XYZ;
    echo $variable;
    
        3
  •  29
  •   Tom Haigh    16 年前

    你可以用 alternative syntax alternative syntax for control structures 从PHP中脱颖而出:

    <?php if ($something): ?>
        <some /> <tags /> <etc />
        <?=$shortButControversialWayOfPrintingAVariable ?>
        <?php /* A comment not visible in the HTML but is a bit of a pain to write */ ?>
    <?php else: ?>
        <!-- else -->
    <?php endif; ?>
    
        4
  •  15
  •   DisgruntledGoat    16 年前

    基本上,您可以将HTML放在PHP标记之外的任何地方。在显示任何数据之前进行所有必要的数据处理,以便分离逻辑和表示,这也是非常有益的。

    数据显示本身可以位于同一个PHP文件的底部,也可以包含一个单独的PHP文件,该文件主要由HTML组成。

    我喜欢这种紧凑的款式:

    <?php
        /* do your processing here */
    ?>
    
    <html>
    <head>
        <title><?=$title?></title>
    </head>
    <body>
        <?php foreach ( $something as $item ) : ?>
            <p><?=$item?></p>
        <?php endforeach; ?>
    </body>
    </html>
    

    注意:您可能需要使用 <?php echo $var; ?> 而不是 <?=$var?> 取决于您的PHP设置。

        5
  •  7
  •   John Kugelman Michael Hodel    16 年前

    我喜欢这种风格:

      <html>
        <head>
    <%    if (X)
          {
    %>      <title>Definitely X</title>
    <%    }
          else
          {
    %>      <title>Totally not X</title>
    <%    }
    %>  </head>
      </html>
    

    我确实使用ASP样式的标记,是的。对我来说,PHP和HTML的混合看起来非常可读。关键在于 <% %> 标记正好。

        6
  •  7
  •   julz    16 年前

    另一种方法是将HTML放在一个单独的文件中,并用占位符[[内容]]标记要更改的区域。(您也可以使用sprintf代替str_replace。)

    $page = 'hello world';
    $content = file_get_contents('html/welcome.html');
    $pagecontent = str_replace('[[content]]',$content,$page);
    echo($pagecontent);
    

    或者,您可以将所有PHP内容输出到缓冲区中捕获的屏幕,然后编写HTML,然后将PHP输出放回页面。

    写下PHP、捕获它、然后再写一次似乎很奇怪,但这确实意味着您可以做各种格式化工作(HereDocs等),并且可以在不妨碍页面模板的情况下正确测试它的输出。(Joomla CMS就是这样做的,顺便说一句) IE:

    <?php
    ob_start();
    echo('hello world');
    $php_output = ob_get_contents();
    ob_end_clean();
    ?>
    <h1> My Template page says </h1>
    <?php
    echo($php_output );
    ?>
    <hr>
    template footer
    
        7
  •  2
  •   ata NOURDINE BENLKAMLE    7 年前
    $enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';
    
    echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );
    
        8
  •  1
  •   Community CDub    8 年前

    除了 Chris B's 回答,如果你需要使用 echo 不管怎样,仍然希望保持简单和结构化,并且不希望用垃圾邮件发送代码 <?php stuff; ?> 's,您可以使用下面的语法。

    例如,要显示库的图像:

    foreach($images as $image)
    {
        echo
        '<li>',
            '<a href="', site_url(), 'images/', $image['name'], '">',
                '<img ',
                    'class="image" ',
                    'title="', $image['title'], '" ',
                    'src="', site_url(), 'images/thumbs/', $image['filename'], '" ',
                    'alt="', $image['description'], '"',
                '>',
            '</a>',
        '</li>';
    }
    

    Echo 采用多个参数,因此具有良好的缩进效果,看起来相当不错。还使用 回声 使用参数比连接更有效。

        9
  •  1
  •   Edwin Thomas    10 年前

    试试看这可能对你有帮助……

    <?php
    echo <<<HTML
    
    your html tags here
    
    HTML;
    ?>
    
        10
  •  1
  •   Hmache    10 年前

    不回显HTML

    如果你想用

    <?php echo "<h1>  $title; </h1>"; ?>
    

    你应该这样做:

    <h1><?= $title;?></h1>
    
        11
  •  1
  •   Code Spy    7 年前

    简单使用 打印 函数将文本回送到PHP文件中,如下所示

    <?php
    
      print('
    
        <div class="wrap">
    
          <span class="textClass">TESTING</span>
    
        </div>
    
    
      ')
    
    ?>
    
        12
  •  1
  •   Alessandro    7 年前
    echo '
    <html>
    <body>
    </body>
    </html>
    ';
    

    echo "<html>\n<body>\n</body>\n</html>\n";