在 PHP 变量中定义 html 代码

Defining html code inside PHP variables

提问人:adrianTNT 提问时间:9/5/2011 最后编辑:Vishwanath DalviadrianTNT 更新时间:6/30/2023 访问量:106353

问:

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

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

我找到了它,但我现在找不到它。 还有其他东西代替了,但我记不清了。 我想直接像上面一样编写html代码,所以不是这样的:有什么想法吗?PHP.net"{"$my_var = '<div>SOME HTML</div>';

php html 变量

评论


答:

54赞 Emil Vikström 9/5/2011 #1
<?php
$my_var = <<<EOD
<div>SOME HTML</div>
EOD;
?>

它被称为heredoc语法。

评论

0赞 adrianTNT 9/5/2011
我希望 Dreamweaver 能帮助正确格式化 html 语法,但我看到它无法将其识别为 html :|我不能在html之前关闭php标签,然后在html之后再次打开它,我可以吗?
0赞 Emil Vikström 9/5/2011
不,不幸的是,你不能:-/您可以使用 ob_start() 和 ob_get_clean() 开始保存输出缓冲区,然后将缓冲区提取到变量中。不过,这被认为是一个(丑陋的)黑客。
1赞 Rok Kralj 9/5/2011
它不被认为是丑陋的黑客。如果它能减轻你的工作并让你感觉更好,那就使用它。没有人会注意到这种微小的速度差异。
2赞 Emil Vikström 9/5/2011
Rok,我不是在谈论性能。我说的是软件架构。使用输出缓冲区将数据提取到变量中不是一种干净且可维护的方法。
3赞 adrianTNT 9/9/2011
无论如何,ob_start() 似乎都是一个非常极端的解决方案,我可以想象页面加载、脚本等的各种错误。
109赞 Irfanullah Jan 4/6/2014 #2

试试这个:

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

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

评论

4赞 Steven Carlton 2/11/2019
如果您在 html 中有额外的 php 代码,这种方法似乎效果最好。
0赞 Kröw 5/15/2023
对此处的功能进行一些参考或详细说明将是有益的。
11赞 bart 12/12/2015 #3

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

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

评论

0赞 adrianTNT 12/13/2015
是的,这种方法也适用于我的最初目的。
3赞 Mick Houtveen 1/27/2016 #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">
' ;

对我来说非常有效,但我想这是一个偏好和实施的问题。

4赞 RedSparr0w 11/5/2016 #5

如果您要回显内容,那么另一种方法可以做到这一点,那就是使用函数,

这还具有使用语法突出显示的程序的额外好处。

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


htmlContent();
?>

评论

0赞 gui3 7/28/2023
IMO 最优雅的方法,允许传递参数并在元素中包含 php,就像这样,感谢您的提示 =)<?php MyElement("some text"); ?>
1赞 S R Panda 11/1/2018 #6

要在 PHP 变量中定义 HTML 代码:

1) 使用函数 (Ref: @RedSparr0w)

<?php
function htmlContent(){
?>

    <h1>Html Content</h1>

<?php
}
?>

2. 存储在变量中

$var = htmlContent();

评论

3赞 George Dimitriadis 4/8/2021
不知道为什么这被点赞,这不是您将回声存储到变量中的方式。 将只回显 HTML 并分配给$var = htmlContent();NULL$var
-1赞 upsDuck 9/15/2020 #7

为了补充提到在变量中使用函数的少数答案,我可以建议使用匿名函数。我不是 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

标题

一些独特的内容
-1赞 Saurabh 3/19/2021 #8

如何在 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>