以前,在php中写html代码,一般都是如下形式。
echo '<div>hello world!</div>';
上面形式对于代码量少的html还好说,一旦是整段的出现,那可就不妙了。后来网上看到有人用heredoc定界符来处理,试了下,很方便。
$html = <<<EOT
<!--guider-->
<div class="tguider">
<div class="tgstep1">
<ul class="tg_step"><li class="on">●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
<div class="tgstep2">
<ul class="tg_step"><li>●</li><li class="on">●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
<div class="tgstep3">
<ul class="tg_step"><li>●</li><li>●</li><li class="on">●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
<div class="tgstep4">
<ul class="tg_step"><li>●</li><li>●</li><li>●</li><li class="on">●</li><li>●</li><li>●</li><li>●</li><li>●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
<div class="tgstep5">
<ul class="tg_step"><li>●</li><li>●</li><li>●</li><li>●</li><li class="on">●</li><li>●</li><li>●</li><li>●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
<div class="tgstep6">
<ul class="tg_step"><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li class="on">●</li><li>●</li><li>●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
<div class="tgstep7">
<ul class="tg_step"><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li class="on">●</li><li>●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
<div class="tgstep8">
<ul class="tg_step"><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li>●</li><li class="on">●</li></ul>
<p><a class="tg_btn">继续引导</a><a class="tg_close">退出引导</a></p>
</div>
</div>
<div class="overlay"></div>
<script type="text/javascript">
/*引导*/
//$(".tguider").guiderJs();
</script>
EOT;
echo $html;
看,就是定义的第一行最后结束行不同,中间的都是html+js代码,而且,如果html代码中要加入php变量的话,只需{$variable}这样写。
与heredoc对应的是nowdoc,后者解析起来更快,相当于双引号和单引号的区别。使用场景为在脚本中生成php文件,若是用heredoc是有问题的,里面的变量会解析,而dowdoc则没有此问题,看看示例
<?php
$content = <<<'EOT'
<?php
define("APP_PATH", realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */
$app = new Yaf_Application(APP_PATH . "/conf/application.ini");
$app->run();
?>
EOT;
echo $content;
?>
输出
<?php
define("APP_PATH", realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */
$app = new Yaf_Application(APP_PATH . "/conf/application.ini");
$app->run();
?>
当然了,掌握定界符的写法规范也很重要,尤其是结束符前面不能有空格,否则就会报错。
Parse error: syntax error, unexpected $end in E:\www\test\1401\21.php on line 46
同时那个EOT也可以换成其他字符串,当然了开头结尾都应该是该字符串,也就是成对出现。