• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • PHP 标记

    当解析一个文件时,PHP 会寻找起始和结束标记,也就是<?php?>,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。

    PHP 也允许使用短标记<??>,但不鼓励使用。只有通过激活php.ini中的short_open_tag配置指令或者在编译 PHP 时使用了配置选项--enable-short-tags时才能使用短标记。

    如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。

    <?php
    echo "Hello world";
    // ... more code
    echo "Last statement";
    // 脚本至此结束,并无 PHP 结束标记
    Regarding earlier note by @purkrt :
    > I would like to stress out that the opening tag is "<?php[whitespace]", not just "<?php"
    This is absolutely correct, but the wording may confuse some developers less familiar with the extent of the term "[whitespace]".
    Whitespace, in this context, would be any character that generated vertical or horizontal space, including tabs ( \t ), newlines ( \n ), and carriage returns ( \r ), as well as a space character ( \s ). So reusing purkrt's example:
    <?php/*blah*/ echo "a"?> 
    would not work, as mentioned, but :
    <?php /*php followed by space*/ echo "a"?>
    will work, as well as :
    <?php
    /*php followed by end-of-line*/ echo "a"?>
    and :
    <?php  /*php followed by tab*/ echo "a"?>
    I just wanted to clarify this to prevent anyone from misreading purkrt's note to mean that a the opening tag --even when being on its own line--required a space ( \s ) character. The following would work but is not at all necessary or how the earlier comment should be interpreted :
    <?php 
    /*php followed by a space and end-of-line*/ echo "a"?>
    The end-of-line character is whitespace, so it is all that you would need.
    Closing PHP tags are recognised within single-line comments:
      <?php
      // Code will end here ?> This is output as literal text.
      <?php
      # Same with this method of commenting ?> This is output as literal text.
    However they do not have an effect in C-style comments:
      <?php
      /* Code will not end here ?> as closing tags are ignored inside C-style comments. */
      ?>