我要有条件地输出HTML生成页面,有啥呼应HTML的多片段在PHP 4+最简单的方法?我将需要使用像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";
有帮助吗?

解决方案

有几种方法在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。 here文档

4。 Nowdocs(如PHP 5.3.0)的

<强>模板引擎用于在主要包含HTML文档使用PHP。事实上,PHP的最初目的是成为一个模板语言。这就是为什么用PHP,你可以使用之类的东西短标记呼应变量(例如<?=$someVariable?>)。

有其他模板引擎(如Smarty的,嫩枝,等),其使甚更简洁的语法(例如{{someVariable}})。

使用模板发动机保持设计的主要优点(表示逻辑)从编码(商业逻辑)分离。这也使得在长期运行的代码更清洁和更易于维护。

如果您有任何问题随时发表评论。 进一步阅读可以用这些东西在 PHP文档

上帝保佑!


注意: PHP短标记<??>气馁,因为如果用short_open_tag php.ini配置文件中启用,或者如果PHP是用--enable-short-tags选项中配置它们才可用。 他们是可用的,不分场合,从5.4开始

其他提示

尝试这样的:

$variable = <<<XYZ
<html>
<body>

</body>
</html>
XYZ;
echo $variable;

您可以使用控制结构替换语法替换语法>和爆发的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; ?>

基本上你可以把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安装使用<?php echo $var; ?>代替<?=$var?>

我偏此样式:

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

我使用ASP风格的标记,是的。 PHP和HTML的混合看起来超级可读我的眼睛。诀窍是在得到<%%>标记恰到好处。

另一种方法就是把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出来,抓住它,然后重新写它,但它确实意味着你可以做各种格式的东西(here文档等),测试它正确输出,而不页面的麻烦模板的方式获得。 (Joomla CMS的确实是这样,BTW) 即:

<?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

试试这可能会帮助你.......

<?php
echo <<<HTML

your html tags here

HTML;
?>
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );

此外克里斯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参数比串联更有效。

不回声出HTML

如果你想使用

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

你应该这样做:

<h1><?= $title;?></h1>

简单地使用打印函数来呼应在PHP文件文本如下

<?php

  print('

    <div class="wrap">

      <span class="textClass">TESTING</span>

    </div>


  ')

?>
echo '
<html>
<body>
</body>
</html>
';

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

这是我如何做到这一点:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top