【问题标题】:HTML into PHP Variable (HTML outside PHP code)HTML 转换为 PHP 变量(PHP 代码之外的 HTML)
【发布时间】:2010-12-07 14:01:36
【问题描述】:

我是 php 新手,想知道我是否可以拥有这样的东西:

<?php
 ...
 magicFunctionStart();
?>

<html>
   <head>...</head>
   <body>...</body>
</html>

<?php
 $variable = magicFunctionEnd();
 ...
?>

我现在必须使用的是

<?php
 ...
 $variable = "<html><head>...</head><body>...</body></html>"
?>

这很烦人且不可读。

【问题讨论】:

  • 你想要完成什么?
  • 我正在尝试将 html 代码放入 php 变量中

标签: php output-buffering


【解决方案1】:

你试过“输出缓冲”吗?

<?php
 ...
 ob_start();
?>

<html>
   <head>...</head>
   <body>...<?php echo $another_variable ?></body>
</html>

<?php
 $variable = ob_get_clean();
 ...
?>

【讨论】:

  • 谢谢。这就是我要找的!
  • 还有一个问题 =) 是否可以将其他 php 变量放入其中? ... $content
  • 很高兴看到模板语言对此提供支持。
【解决方案2】:

我想你想要heredoc 语法。

例如:

$var = <<<HTML
<html>
   <head>
random crap here
</html>
HTML;

【讨论】:

    【解决方案3】:

    我不太确定你想要完成什么,但我认为像 heredoc syntax 这样的东西可能对你有用:

    <?
    $variable = <<< MYSTRING
    
    <html>
       <head>...</head>
       <body>...</body>
    </html>
    
    MYSTRING;
    

    但是,如果您尝试制作 HTML 模板,我强烈建议您使用真正的模板引擎,例如 SmartyDwooSavant

    【讨论】:

      【解决方案4】:

      好的,你想做的事情是可能的。

      您不能简单地将 HTML 块分配给 php 变量或使用函数这样做。但是,有多种方法可以获得您想要的结果。

      1. 研究模板引擎的使用(我建议您这样做,因为无论如何这都是值得的)。我用smarty,但还有很多其他的
      2. 第二个是使用输出缓冲区。

      您遇到的一个问题是您页面中的任何 HTML 都会立即发送到客户端,这意味着它不能用作 php.ini 中的变量。但是,如果您使用这些功能 ob_start 和 ob_end_fush 你可以实现你想要的。

      例如

      <?php 
        somesetupcode();
        ob_start();  ?>
      <html>
      <body>
      html text
      </body>
      </html>
      <?php
        //This will assign everything that has been output since call to ob_start to your    variable.
        $myHTML = ob_get_contents() ;
        ob_end_flush();
      
      ?>
      

      希望这有助于您阅读 php 文档中的 output buffers

      【讨论】:

        【解决方案5】:

        我总是建议 AVOID 缓冲函数(如 ob_start 等),只要您有替代方案(因为有时它们可​​能与同一系统中的部件冲突) .

        我使用:

        function Show_My_Html()
        { ?> 
            <html>
              <head></head>
              <body>
                 ...
              </body>
            </html>
            <?php 
        }
        
        
        ...
        //then you can output anywhere
        Show_My_Html();
        

        【讨论】:

          【解决方案6】:
          $html_content = '
              <p class="yourcssclass">Your HTML Code inside apostraphes</p>
          ';
          echo $html_content;
          

          【讨论】:

            【解决方案7】:

            这真的很疯狂,但请注意,如果你这样做:

            <?php echo ""; ?>  
            

            你会得到它:

            <html><head></head><body></body></html>  
            

            保持冷静,它唯一的 php 试图让你发疯。

            【讨论】:

            • 这绝不是一个正确的答案。您可能在浏览器中查看了一个空页面的 dom 源代码并感到惊讶。
            • 这是在 HTML 规范中定义为具有 可选 开始和结束标记的浏览器生成元素。它与PHP无关。
            猜你喜欢
            • 1970-01-01
            • 2014-10-17
            • 1970-01-01
            • 1970-01-01
            • 2018-03-07
            • 1970-01-01
            • 2023-03-23
            • 2015-10-17
            • 2016-05-24
            相关资源
            最近更新 更多