是&#34; PHP&#34;在&#34; <! - ?“? - >之后需要

时间:2014-05-01 18:28:39

标签: php syntax

我正在阅读一些我一直在使用的旧代码,并且因为它仍在运行而知道有效。然而,当我发现我写了一个<?而不是<?PHP时,我很困惑。然而,之后的代码仍然有效。 这是定义的吗?这应该是这样的吗?我编写的代码是否比我可能的多一些?离开PHP感觉很脏,但是如果可以的话,我也可以,对吗?


沙箱:http://sandbox.onlinephpfunctions.com/code/69b81a2f45927d3feb52af012521480e1ba01edd

3 个答案:

答案 0 :(得分:5)

来自PHP manual

  

当PHP解析文件时,它会查找开始和结束标记,它们是<?php?>,它告诉PHP开始和停止解释它们之间的代码。以这种方式解析允许PHP嵌入到各种不同的文档中,因为PHP解析器会忽略一对开始和结束标记之外的所有内容。

     

PHP还允许使用短开放标记<??>(不建议这样做,因为它们只有在使用short_open_tag php.ini配置文件指令启用时才可用,或者如果配置了PHP使用--enable-short-tags选项。

答案 1 :(得分:5)

它取决于服务器配置。如果服务器已启用short_open_tag

short_open_tag=On

在php.ini文件中,PHP将允许短标签。

注意: PHP不建议使用短标记。

Good Discussion Link

答案 2 :(得分:3)

如果您只能使用<?php ?>,或者您可以同时使用<? ?><?php ?>,具体取决于服务器配置。

启用<? ?>可能会导致某些应用程序出现问题。想象一下,您在index.phpindex.phtml文件中包含此代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head></head>
    <body></body>
</html>

启用<? ?>后会遇到错误,因为<?是xml定义的一部分:

<?xml version="1.0" encoding="UTF-8"?>

因此,您必须在服务器配置中禁用<? ?>的使用,否则您将不得不使用某些解决方法。

然而,<? ?>的使用使得组合HTML和PHP代码的文件更具可读性。 <?= $var ?><?php echo $var ?>更具可读性且更短。