文章来源:http://www.cnblogs.com/techmoe/p/4611658.html

PHP作为一款服务端的编程语言,想输出到浏览器看就不可避免的输出HTML代码,下文介绍下一下我用的三种PHP/HTML结合的方法

1.单,双引号包围法

这是最初级的办法了,使用方法就像下面那样

<?php
echo '
<!DOCTYPE html>
<html>
	<head>
		<title> </title>
	</head>
	<body>
		<span>测试页面</span>
	</body>
</html>
';
?>

这样是最简单的一种办法了,直接用单双引号包上就行了

至于双引号和单引号的区别,就在于前者解析引号内的变量,而后者不解析引号内的变量,参看下面的例子

<?php
$Content='Hello!';
echo "$Content";
echo '<br>';
echo '$Content';
?>

输出

Hello!
$Content

由此可见,用双引号保住的字符串中的变量名自动解析成了变量值,而用单引号包围则仍然展现变量名

这样导致缺点有两点

1.当输出内容中包含大量单或者双引号将会极难处理,原因是PHP无法判断这个引号是属于程序的还是输出内容的,转义工作很麻烦

2.这样书写一些现代文本编辑器(如SublimeText)将无法对引号包围的输出的内容来语法着色,如果出现一些格式问题将几乎不能发现。图中为SublimeText3的一张图片,上面的是正常的着色,下面则是用引号包围的着色

2.HEREDOC/NOWDOC

HEREDOC和NOWDOC是PHP5.3添加的一种新特性,它允许在程序中使用一种自定义的标志符来围住文本,而HEREDOC和NOWDOC的联系就类似于双引号围住和单引号围住,前者解析区块内的变量,而后者不解析区块内的变量

下面介绍HEREDOC和NOWDOC的用法

<?php
$Content='Hello!';

//下面写出了一个HEREDOC,其中标识LABEL可以自定义为任何字符串,但要保证开头的标识和结尾的标识一样
echo <<<LABEL
$Content
LABEL;
//结尾的方法:另起一行,打上LABEL。注意结尾的标识前面和后面不要插入任何字符,空格也不行

echo '<br>';//为了演示方便换行

//NOWDOC和HEREDOC的书写方式差别在于NOWDOC的标识符需要用单引号包围
echo <<<'LABEL'
$Content
LABEL;
//其他无异


?>

也可以参考PHP.net上的关于这两个的wiki:https://wiki.php.net/rfc/heredoc-with-double-quotes

用HEREDOC/NOWDOC书写非常好的处理了包围引号的问题,但依然没有处理语法着色失效的问题

3.HTML中插入PHP代码块(推荐)

 这是一种十分适宜的办法,而且这种办法广泛用在了比如WordPress模板等场合中。书写起来也较为舒服,可以直接在需要输出的相关地方写上代码就可以了,就像比如下面那样

<?php

//首先在这里写好相关的调用代码
function OutputTitle(){
echo 'TestPage';
}
function OutputContent(){
echo 'Hello!';
}

//然后再下面调用相关函数就可以了
?>

<!DOCTYPE html>
<html>
<head>
<title><?php OutputTitle(); ?></title>
</head>
<body>
<span><?php OutputContent(); ?></span>
</body>
</html>

我以为这种办法是在这三种办法中最好的,但是这样做的不足是假如这样的代码块一多了就会非常影响程序的阅读。

4.使用前端模板引擎

由于前端的重要性在整个Web**中日益上升,如今前/后端工程师逐步在变成两个职业,所以说为了确保前/后端工程师可以互相配合,使前端**和后端**出来的东西对接更圆满,逐步催生出了一系列前端模板引擎,比方Smarty。运用Smarty书写的完成代码可读性十分的高,这使前/后端的分别**也愈加的高效和便利。有想法的就可以搜索了解一下它

发表评论

电子邮件地址不会被公开。 必填项已用*标注