|  | 
 
| 
本帖最后由 mumudontcry 于 2017-2-21 22:06 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 写在前面
 
 上一篇讲了 PHP 的基础大概,现在我们开始详细讲解一下:PHP 标记
 
 PHP是什么?
 
 PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML 中,尤其适合 web 开发。
 
 以上是官方的解释,我们就按照课本走,因此,在遇到不懂的问题的时候,多查手册:http://php.net/manual/zh/
 
 PHP 官网提供了一个非常友好的文档功能,如果你需要查看一个 PHP 函数的解释,你可以直接通过一个很容易记住的规则直接跳转到对应页面!
 
 比如,我们需要查看函数“array_keys”的解释,我们只需要地址上输入:http://php.net/array_keys
 
 是不是很简单?甚至你可以输入:http://php.net/whatisphp,嗯……一个很有意思的设定
 
 那么现在开始正式的内容
 
 PHP 标记
 
 当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php 和 ?>,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略
 
 这句话意味着,只要你告诉服务器,这货是一个 PHP 文件,然后服务器就可以用 PHP 解析器去解析这个文件,这与后缀是无关的(.php 不是必须的),这个可以在 ThinkPHP 框架的视图层找到例子(ThinkPHP 框架是国人开发的 PHP 框架,丰富的文档、火热的社区……没有广告)
 
 PHP 总共支持四种标记,除了上面的<?php 和 ?>,我们称之为“长标记”还有
 短标记:<? 和 ?>,你需要在 php.ini 配置文件里开启 short_open_tag 选项或者在编译 PHP 时使用了配置选项 --enable-short-tags 才能使用
 标记:<script language="php"> 和 </script>,这个总是可用
 ASP风格:<% 和 %> 需要在 php.ini 中开启 asp_tags 选项
 
 但是!我们切记只使用长标记,其他风格的标记,例如短标记,会和 xml 文件的标记冲突
 
 复制代码<?xml version="1.0" encoding="UTF-8"?> 
是 xml 文件的开始标记,前面的部分刚好符合短标记的格式
 同时,其他风格的标记并不适用于任何情况,当你的网站服务商不允许你修改 php.ini 文件,并且你网站里充斥着另外三种标记时,这就是你噩梦的开始
 
 如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图
 就像这样
 
 复制代码<?php
echo 'hello world';
 举个例子,假设你的网站的纯 PHP 文件使用了结束标记,那么,在不正确的操作 PHP 文件时,可能在文件末尾加上不可见的字符,而在网站渲染视图时,用到 header 函数的地方就会报错,因为 header 函数之前不允许有任何内容的输出!结束标记意味着,在解析 PHP 文件时,文件末尾的不可见字符被打印出来了,所以,纯 PHP 文件是坚决不允许有结束标记的!
 
 开始标记的含义
 
 在 PHP 5.2 和之前的版本中,解释器不允许一个文件的全部内容就是一个开始标记 <?php。自 PHP 5.3 起则允许此种文件,但要开始标记后有一个或更多白空格符。
 
 这句话其实包含另外一个含义,所谓的开始标记其实并不仅仅指“<?php”,而是还需要在后面加一个空格符,这个空格符可能是:tab(\t),换行(\n)、回车(\r)以及(\s)
 
 这也是我建议在开始标记之后,加一个空行的习惯的理由,你不会因为莫名其妙的问题而查资料半天
 
 高级分离术
 
 凡是在一对开始和结束标记之外的内容都会被 PHP 解析器忽略,这使得 PHP 文件可以具备混合内容。 可以使 PHP 嵌入到 HTML 文档中去
 
 
 复制代码<?php if ($expression == true): ?>
  表达式为真时显示这里
<?php else: ?>
  表达式为假时显示这里
<?php endif; ?>
 网页中,你大可不必在一对标记之间写完所有的逻辑,因为,PHP 会把 PHP标记括起来的内容解析成 PHP 去执行,我们就可以让 HTML 代码和 PHP 代码混合使用,这样做,你可以让 HTML 代码看起来更像是 HTML 代码,而不是一个大块的 PHP 代码块
 还有一个额外的好处就是,这种方式会比把 HTML 代码用 PHP echo出来更有效率,假如你需要(没有假如,因为 PHP 站点的很多内容就是用 PHP 输出的)输出一大段的内容,echo 的执行效率会比“高级分离术”更低
 
 echo 的简写
 
 
 
 在 HTML 中,我们可以用这样的标记去代替<?php echo 'hello world'; ?>,自 PHP 5.4 起,短格式的 echo 标记 <?= 总会被识别并且合法
 
 结构语句的简写
 
 
 复制代码<?php if ($var == 1) { ?>
我是 HTML 代码
<?php  } ?>
 可以改成
 
 
 复制代码<?php if ($var == 1): ?>
我是 HTML 代码
<?php endif;?>
 这样写的好处是,你可以在一个很复杂的结构中,清楚的划分,if 、for语句的位置,因为大括号太多,你根本就不知道哪里跟哪里是一对的
 而且这样看起来其实也更有 HTML 风格不是么?
 
 
 如果你不太清楚这些结构化的语句的结束写法,你可以使用netbeans智能地去输出
 关于 PHP 的结束标记
 
 在网页中,结束标记会删除行末的换行符(注意,只是换行符!),你可以尝试在浏览器中打开这样的 PHP 文件
 
 
 复制代码<pre>
I
<?php echo 'am';?>
php
</pre>
 以及
 
 
 复制代码<pre>
I
<?php echo 'am';?>.
php
</pre>
 第一种会导致m和p连在一起,要解决这个问题,你可以在 m 的这一行的 PHP 标记之外加一个空格,就像这样 "?> "
 之所以会提出这个东西,因为很多小伙伴在使用sublime或者其他编辑器时,可能会有一个编辑器设置的习惯,就是保存时去掉末尾空白符号,如果是这样……你的网页可能就坏了,这个是一个陷阱!
 
 结束标记还有一个特性,就是,你可以不需要写末尾的分号,就像这样
 
 因为结束标记意味着:行结束,行结束了的话,就可以不需要分号结尾了
 
 最后
 
 我们用一段代码结束这一讲的内容
 
 
 复制代码<?php if ($name == '木木'): ?>
<?= '木木' ?>你好
<?php endif ?>
 作业
 
 用 PHP 执行并且说明,最后一段代码包含了这一讲里面说过的哪些知识点?
 
 
 如果喜欢木木的讲解,就点击下方的订阅(读作:打赏),给木木点个赞吧,欢迎大家提出建议或者指正
 | 
 评分
查看全部评分
 |