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";
#1 楼
有几种方法可以在PHP中回显HTML。1。在PHP标签之间
<?php if(condition){ ?>
<!-- HTML here -->
<?php } ?>
2。在回声中
if(condition){
echo "HTML here";
}
通过回声,如果您希望在HTML中使用双引号,则必须使用单引号回声,如下所示:
echo '<input type="text">';
也可以像这样进行转义:
echo "<input type=\"text\">";
3。 Heredocs
4。 Nowdocs(自PHP 5.3.0起)
模板引擎用于在主要包含HTML的文档中使用PHP。实际上,PHP的最初目的是成为一种模板语言。这就是使用PHP可以使用短标签之类的东西来回显变量的原因(例如
<?=$someVariable?>
)。还有其他模板引擎(例如Smarty,Twig等)使语法更加简洁(例如
{{someVariable}}
)。 使用模板引擎的主要好处是将设计(表示逻辑)与编码(业务逻辑)分开。从长远来看,这也使代码更简洁,更易于维护。
如果您还有其他问题,请随时发表评论。
PHP文档中的这些内容都可以进一步阅读。
/>
注意:不鼓励使用PHP短标签
<?
和?>
,因为它们只有在通过short_open_tag
php.ini配置文件指令启用或通过--enable-short-tags
选项配置了PHP后才可用。无论从5.4版开始如何设置,它们均可用。评论
“ / * HTML here * /”真的不应该是“ <!-HTML here->”吗? ;)
–杰里米·洛根(Jeremy Logan)
09年7月8日在20:50
是的,在第一篇文章中,您是正确的。我陷入了代码哈哈。谢谢。
–克里斯·比尔(Chris Bier)
09年7月8日21:00
谢谢@克里斯·B。它帮助了我。对于回声,如果您希望在HTML中使用双引号,则必须使用单引号回声,如下所示:我实际上错过了这一点。
–阿尤什·米什拉(Ayush Mishra)
2013年1月2日,9:13
答案中的第一个链接现已删除:(
–mcon
15年8月20日在15:58
实际上,从5.4开始,唯一可用的短标签就是短回显标签<?= $ var?>。通常不鼓励使用短标签,并将其删除(<?doStuff()?>)。
–igorsantos07
2015年10月11日17:26
#2 楼
像这样尝试(heredoc语法):$variable = <<<XYZ
<html>
<body>
</body>
</html>
XYZ;
echo $variable;
评论
@MhdSyrwan只是随机字符,您可以在这里阅读更多信息php.net/manual/en/…
–lfx
2011-09-23 18:22
想详细说明吗?我没有看到打开或关闭PHP括号,但是同时看到了HTML和PHP,是吗? -链接可以正常工作并更好地回答,但是也许应该在答案文本中,而不是注释中?
– Julix
17年5月14日在20:06
@Julix当然,您需要添加PHP标记的开始和结束。他只是想简单地举例说明。
–法米
18年1月10日在10:07
我知道了;我以某种方式错过了这是heredocs语法(即整个代码是php)。我感到困惑,因为那时我还不熟悉PHP,并且习惯于看到<?php $ variable =“ bla”;这样的语法。 ?> ”> body> html> ---所以我以为缺少一堆括号,不确定它们到底在哪里。当我回答稍老的评论时,总是很有趣,因为那时我还很陌生。
– Julix
18年1月11日,18:50
#3 楼
您可以将替代语法用于控制结构并突破PHP:<?php if ($something): ?>
<some /> <tags /> <etc />
<?=$shortButControversialWayOfPrintingAVariable ?>
<?php /* A comment not visible in the HTML, but it is a bit of a pain to write */ ?>
<?php else: ?>
<!-- else -->
<?php endif; ?>
评论
@杰里米:这可能是最好,最直接的方法,前提是您不想再找其他东西了。
–坦率的V
09年7月8日在20:30
是的,特别是在HTML之间使用PHP注释的能力,这些注释不会被回显。
–罗宾·罗德里克斯(Robin Rodricks)
09年7月8日在20:33
#4 楼
基本上,您可以将HTML放置在PHP标记之外的任何位置。在显示任何数据之前进行所有必要的数据处理也非常有益,以便将逻辑和表示分开。数据显示本身可以在同一PHP文件的底部,或者您可以包括
我更喜欢这种紧凑的样式:
<?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 楼
我偏爱这种样式: <html>
<head>
<% if (X)
{
%> <title>Definitely X</title>
<% }
else
{
%> <title>Totally not X</title>
<% }
%> </head>
</html>
我确实使用ASP样式的标签,是的。在我看来,PHP和HTML的融合看起来超级可读。诀窍在于使
<%
和%>
标记正确。评论
ASP标记与PHP 4+兼容吗?
–罗宾·罗德里克斯(Robin Rodricks)
09年7月8日在20:35
是的,但是在它们持续使用时得到了它们-它们已从PHP中删除(不确定哪个版本,如果尚未使用)
–格雷格
09年7月8日在20:44
#6 楼
在这种情况下,另一种方法是将HTML放在单独的文件中,并用占位符[[content]]标记要更改的区域。 (您也可以使用sprintf而不是str_replace。)或者,您可以将所有PHP内容输出到缓冲区中捕获的屏幕上,编写HTML,然后将PHP输出放回页面。写出PHP,捕获它,然后再次写它似乎很奇怪,但这确实意味着您可以进行各种格式的设置(例如Heredoc等),并测试其输出。正确地处理页面模板的麻烦。 (顺便说一下,Joomla CMS就是这样做的。)
即:
$page = 'Hello, World!';
$content = file_get_contents('html/welcome.html');
$pagecontent = str_replace('[[content]]', $content, $page);
echo($pagecontent);
#7 楼
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';
echo('Echo as HTML' . htmlspecialchars((string)$enter_string));
#8 楼
只需使用print函数在PHP文件中回显文本,如下所示:<?php
print('
<div class="wrap">
<span class="textClass">TESTING</span>
</div>
')
?>
#9 楼
除了Chris B的答案外,如果仍然需要使用echo
,但仍希望保持其简单和结构化,又不想对<?php stuff; ?>
进行垃圾邮件,则可以使用以下语法。例如,您要显示画廊的图像:
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采用多个参数,因此缩进效果很好。同样,将
echo
与参数一起使用比串联更有效。#10 楼
echo '
<html>
<body>
</body>
</html>
';
或
echo "<html>\n<body>\n</body>\n</html>\n";
#11 楼
试试这个: <?php
echo <<<HTML
Your HTML tags here
HTML;
?>
#12 楼
不要回显HTML。如果要使用
<?php echo "<h1> $title; </h1>"; ?>
,您应该这样做:
<h1><?= $title;?></h1>
#13 楼
这是我的方法:<?php if($contition == true){ ?>
<input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
<p>No input here </p>
<?php } ?>
评论
不知道为什么有人在同一线程中写下几乎相同的答案并获得30票赞成时,为什么您的答案被特别否决了。不过,这是完全有效的语法。有时堆栈溢出毫无意义...
–朋友
8月12日4:46
评论
\ n在html中不起作用。我猜你的意思是echo“”;
好主意是要从逻辑上分离您的逻辑(例如在MVC中)。使用Twig之类的Templetig引擎将您的视图与脚本逻辑分开-twig.sensiolabs.org旨在将您的html标记实现到您的php脚本中,请以其他方式进行操作。实现php变量,以树枝寺庙。一旦您理解了我的意思,您就会看到这种方法的好处。嫩枝解决了这类问题。对于少量的代码,您可以编写自己的细枝扩展,然后将其扩展使用,以执行一些复杂但重复的任务。
可能如何与javascript或html函数一起使用php echo?还是带有document.write的php和html?