【问题标题】:Defining html code inside PHP variables在 PHP 变量中定义 html 代码
【发布时间】:2011-09-05 08:59:37
【问题描述】:

我想在 php 变量中包含 html 代码。 我记得有一种方法可以在 php 变量中定义 html 代码,类似于:

<?php $my_var = { ?>
<div>SOME HTML</div>
<?php } ?>

我在PHP.net 上找到了它,但现在找不到了。 还有其他东西而不是"{",但我不记得确切了。 我希望像上面那样直接编写 html 代码,所以不要这样:$my_var = '&lt;div&gt;SOME HTML&lt;/div&gt;'; 有什么想法吗?

【问题讨论】:

    标签: php html variables


    【解决方案1】:

    试试这个:

    <?php ob_start(); ?>
    <div>HTML goes here...</div>
    <div>More HTML...</div>
    <?php $my_var = ob_get_clean(); ?>
    

    这样您将保留 HTML 的语法高亮显示。

    【讨论】:

    • 这应该在顶部。比 EOD 干净得多
    • 如果您的 html 中有额外的 php 代码,这种方法似乎效果最好。
    • 谁来付给他 2 块饼干?
    • 经过数小时尝试在 Wordpress 中的另一个 SHORTCODE 中插入一个 SHORTCODE,我发现了这个!谢谢你!我会付给他饼干的!
    • 很好的解决方案!
    【解决方案2】:
    <?php
    $my_var = <<<EOD
    <div>SOME HTML</div>
    EOD;
    ?>
    

    它被称为heredoc 语法。

    【讨论】:

    • 我希望 Dreamweaver 能够帮助正确格式化 html 语法,但我发现它无法将其识别为 html :|我无法在 html 之前关闭该 php 标签并在 html 之后再次打开它,可以吗?
    • 不,很遗憾,您不能:-/ 您可以使用 ob_start() 和 ob_get_clean() 开始保存输出缓冲区,然后将缓冲区提取到变量中。不过,这被认为是(丑陋的)黑客攻击。
    • 它不被认为是丑陋的黑客。如果它可以减轻您的工作并让您感觉更好,请使用它。没有人会注意到这种微小的速度差异。
    • Rok,我不是在谈论性能。我说的是软件架构。使用输出缓冲区将数据提取到变量中并不是一种干净且可维护的方法。
    • ob_start() 在任何情况下似乎都是一个非常极端的解决方案,我可以想象页面加载、脚本等各种错误。
    【解决方案3】:

    将您的 HTML 保存在单独的文件中:example.html. 然后将文件内容读入变量中

    $my_var = file_get_contents('example.html');
    

    【讨论】:

    • 是的,这种方法也适用于我最初的目的。
    【解决方案4】:

    如果您不关心 HTML 语法高亮,您可以定义一个普通变量。您也不必转义 HTML,因为 PHP 允许您使用单引号来定义变量,这意味着您可以在 HTML 代码中使用双引号。

    $html = '
     <p>
      <b><i>Some html within a php variable</i><b>
     </p>
     <img src="path/to/some/boat.png" alt="This is an image of a boat">
    ' ;
    

    对我来说完美无缺,但我猜这是偏好和实施的问题。

    【讨论】:

      【解决方案5】:

      如果您要回显内容,那么另一种方法是使用函数,

      这还具有程序使用语法高亮的额外好处。

      function htmlContent(){
      ?>
          <h1>Html Content</h1>
      <?php
      }
      
      
      htmlContent();
      ?>
      

      【讨论】:

        【解决方案6】:

        在 PHP 变量中定义 HTML 代码:

        1) 使用函数(参考:@RedSparr0w)

        <?php
        function htmlContent(){
        ?>
        
            <h1>Html Content</h1>
        
        <?php
        }
        ?>
        

        2。存储在变量中

        $var = htmlContent();
        

        【讨论】:

        • 不知道为什么会这样,这不是您将回显存储到变量中的方式。 $var = htmlContent(); 只会回显 HTML 并将 NULL 分配给 $var
        【解决方案7】:

        如何在 html 的 tr、td 部分使用这个数组并将这个 html 内容分配给 php 变量 $data。

        $student = [
        'saurabh' => 26,
        'John' => 20,
        'Ross' => 30 
        ];
        
        <!DOCTYPE html>
        <html>
        <head>
        <style>
        table{
          border: 1px solid black;
        }
        .lft {
            padding: 0px 80px 10px 5px;
        }
        td {
            border-bottom: 2px solid black;
        }
        </style>
        </head>
        <body>
        <table>
          <tr>
            <th>Name</th>
            <th>Age</th>
          </tr>
          <tr>
            <td>Saurabh</td>
            <td>26</td>
          </tr>
        </table>
        </body>
        </html>
        

        【讨论】:

          【解决方案8】:

          添加到提到在 var 中使用函数的少数答案。我可以建议一个anonymous function。我不是 php 向导,所以如果我错了,请纠正我,但我想它的工作原理如下:

          <?php
          $my_var = function(){
             ?>
             <div>SOME HTML</div>
             <?php
          };
          
          // Display content
          $my_var();
          

          为了进一步扩展,如果 html 中需要其他 php 内容,可以通过几种不同的方式传递。

          $method1 = "Title"; // Will be the same for every instance 
          $method2 = "default content"; // Can change for each instance
          $my_var = function($unique=$method2/*set default*/) use ($method1){
             ?>
             <h1><?php echo $prop1; ?></h1>
             <div><?php echo $unique; ?></div>
             <?php
          };
          
          // Display content
          
          $my_var();
          //returns
          

          标题

          默认内容
          $my_var("Some unique content");
          //returns
          

          标题

          一些独特的内容

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-06
            • 2021-10-18
            • 1970-01-01
            • 1970-01-01
            • 2010-12-07
            • 1970-01-01
            • 2015-10-11
            相关资源
            最近更新 更多