我是菜鸟,刚学习PHP,把学习过备的问题记录下来,以备查询。
今天就记录一下PHP 结束符 也就是 ?> 何时可以省略的问题。
首先整个php文件都没有html元素标签。那么就是纯php代码,这时候肯定可以省略结束符的。
有人说php和html混合编写就不能省略,否则,也就是只有php代码那么可以省略。其实这句话是个坑。
根据我的理解应该是这样的:
1、如果php代码嵌入在html标签里,这时候不能省略。比如:
<html>
<?php
$a=1;
echo '$a';
echo "$a";
?> <!--这个地方的结束标签不能省略,看到注释符号就知道了。你用// 注释就显示注释内容了。 -->
<body>
</body>
</html>
以上是php和html简单的混合,高级的混合更不能省略。如:
<ul>
<?php for($i=1;$i<20;$i++){ ?>
<li>
<?php echo "我在这里输出的是\$i的值:$i"; ?>
</li>
<?php } ?>
</ul>
以上的所有 ?>都不能省略。
2、如果html标签嵌入在php里面(其实是php语句中含有html元素)这时候,可以省略。
<?php
$a=1;
echo '<p>$a<p>'; //就算是单引号,照样不显示<P> 而只显示$a
echo "<p>$a<p>"; //PHP代码里面有<p> 标签,但因为是html标签,因此不会显示出来<p>,而只显示1。
?> // 这个地方的结束标签可以省略
3、至于php代码里含有html元素同时这个html元素里有php代码。我没试验,因此不知道里面php代码可否省略。按照常理应该是外层(也就是整个文件最后 一行的?>)应该可以省略(符合第二条)html元素里面的php代码不能省略(符合第一条)。
<?php
echo '<html>';
echo '<body>';
echo '<a href="index.php?id=<?php echo urldecode("php"); ?>"> language </a> // 这里的?> 猜测不能省略,但我不确定,知道的请留言,谢谢!
echo '</body>';
echo '</html>';
?> //这个估计可以省略