标签语法|学习笔记

简介: 快速学习标签语法

开发者学堂课程【PHP 基础入门课程(下)标签语法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/710/detail/12621


标签语法


内容介绍:

一、了解标签语法

二、标签语法的概念

三、使用步骤

四、流程图示例

五、小结


一、了解标签语法

举例

PHP 嵌入在 HTML 中输出表格

<html>

<head>

<title> PHP 嵌入到 HTML 中</title>

<head>

<body>

<!--动态输出表格数据:打印九九乘法表-->

<table>

<?Php

#外层循环:控制行(一行一个 tr 标记控制)

for($i = 1;$i <= 9; $i++) {

echo’<tr>’;

#内存循环;控制列和输出(一列一个 td 标签控制)

for($j = 1;$j <= 9; $i++) {

echo’<td>’;

#判定

If($j <= $i) {

Echo”$i * $j = “ . $i * $j;

}

Echo’</tr>’;

}

?>

<table>

</body>

</html>

目标是要了解什么是标签语法,它的结构是什么样子的,我们怎么去用它比较合适。首先我们举个例子, PHP 是一种嵌入在 HTML 中的标记语言,所以有的时候 PHP 会不得已把我们的代码嵌入到 HTML 中,比如说出现这样一种情况,我们现在要做的一件事情,是要动态的输出一个表格的数据,比如打印九九乘法表。那按照我们的写法应该是这样的一个 table 标签,然后里面就是各种 TD,比如说外层循环,一上来给了一个 TR,每一个里面内层循环就是各一行数据里面的各种列,各种 TD,那就可以把它输出来了,这样的话就可以完成对应的九九乘法表的一个输出。但是这个代码里面他其实出现了一些小的问题。比如说 HTML 的一些代码,TR 、TD 这些东西都出现在哪儿?都是在 PHP 的 echo 里面出现的,也就是都属于我们 PHP 内部的。代码都是体现在内部的,那么这个时候前端如果想要对它进行一个维护,比如说做一个样式,那他就只能基于当前的 table 在外面整体的控制,它不能针对某一行或者某一列,来做一些特殊的控制,它就操作不了,所以他不方便我们进行一个样式的控制。具体的元素标签也不方便,我们对这些东西进行一个属性的控制,比如说 TR 里面我要进行合并,那这个就控制不了,如果 PHP 要实现要写很多的代码去完成 ,至于这样的一个问题我们有一种解决方案,就是说 PHP 只负责 PHP 代码和数据的输出,至于标记我们不管,标记就用标记来输出,还是标记本身,但是这个代码我们怎么写呢,比如说 for 循环,写外层的循环,但是此时你会发现我们接下来理论上 for 下面要跟 TR 了,因为外层循环我们要控制行,但是 TR 属于 HTML 标记,我们把它单独拎出来就行,然后接下来有的地方我们就用 PHP 写。不是 PHP 的地方我们就用标记把它保留,其实就是前面的这段代码,把这 echo PD 把它拿走,变成一个,但是前面我们要让它结束 echo TR 把它拿出来,变成这个 HTML 的标记就可以,本质这样的一个过程,这样的话我们就可以解决这个问题。前端人员就可以利用这些 TR、TD 来进行一些样式或者属性的一个控制,而不要跑到 PHP 里面,是不是还可能出现问题,这种就不存在了。但是,这个上面还是出现了一些问题,会发现这样有好多括号的代码好像有点尴尬,这对接不上有可能可读性变得非常差,而且让我们的代码显得非常凌乱,偶尔找一个 TR,偶尔找一个 TD,所以这个时候要有一种解决方案,那这种解决方案怎么办,其实 PHP 也给我们提供,叫做标签语法。


二、标签语法的概念

所以这种标签语法的一个概念是指,当 PHP 嵌入到 HTML 中,有的时候为了让 PHP 的代码结构更加符合 HTML 的规范,我们设定了一种特殊的结构设定,这种特殊的结构要注意一点,不是说所有的语法结构都存在、都可以完全用,其实它主要针对的是大括号这个东西来设计。

他这种设计包含两种,一个是分支标签,还有一个叫循环标签,当分支标签出现这种大括号的时候,我们会用对应的标签语法来代替。

如何去用语法呢,那这个规则是比如说分支循环,我们出现了一个左边的大括号的时候,我们可以使用冒号代替,如果出现了右边大括号,我们就可以使用 end 再加对应的标记内容来代替。比如假设有一个东西叫做 if,那我们就可以用 end if 来对应,如果是 while,我们就可以 end while 来对应。标记语法有很多 if 分支、 switch 分支、 While 循环、 for 循环、 foreach 循环都有,都是以一个什么特点呢?比如说以 if 为例,if 条件表达式左边大括号,冒号,右边大括号那就 end if 代替,这样的话它们成对很容易看清楚。


三、使用步骤

知道了这种东西,我们就来试试看怎么去用它。先看步骤应该怎么完成,也就是当 php 正常嵌入到 HTML 的时候,HTML 标记独立,在 PHP 代码之外,要把它独立出来。但如果此时碰到了分支或者循环,就是这种可以有标签的,要考虑一下,如果这对大括号里面这种标记的大括号 if 也好,还是循环也好,里面有 HTML 标记。那就用标签语法把它分割出来,如果没有,就不需要去再去用这种标记来做,没有这种必要。这个案例,给替换一下,替换成标记。

示例

将上述案例替换成标记语法

<html>

<head>

<title>  PHP 嵌入到 HTML 中</title>

<head>

<body>

<!--动态输出表格数据:打印九九乘法表;凡是 HTML 标记,都不PHP 控制-->

<table>

<?Php

#外层循环:控制行(一行一个tr标记控制)

for($i = 1;$i <= 9; $i++):

?>

<!-- HTML 标记不再属于 PHP 内部控制代码-->

<tr>

<?php

#内存循环;控制列和输出(一列一个td标签控制)

for($j = 1;$j <= 9; $i++) {

?>

<!-- HTML 标记不再属于 PHP 内部控制代码-->

<td>

<?Php

#此处没有 HTML 标签介入,所以不用拆分

If($j <= $i) {

Echo”$i * $j = “ . $i * $j;

End if;

?>

<!-- HTML 标记不再属于 PHP 内部控制的代码-->                    

</td>

<!--内存的 for 循环结束-->

<?Php end for;?>

<!-- HTML 标记不再属于 PHP 内部控制的代码-->                    

</tr>

<!--外层的 for 循环结束-->

<?Php end for;?>

<table>

</body>

</html>

只要找到对应的大括号就行了,左边的一个大括号,冒号不要了,然后里面又一个 for 用冒号,像这种的话, if 里面没有标签,所以可以直接写完,当然你也可以用对应的冒号,然后 end 也是可以用的。只是说在 PHP 里面本身也能用,但是一般不这么用而已,所以像这种,就尽量的保证它原来的一个样子就可以了,因为这个不需要把它拆出来,然后后面在结束的时候,就 end for 分号就可以了,然后结束 end for 分号。这样做的一个目的就是找到这样的一个东西,我们很容易去对标到对应的一个 for 标签,因为 end for 我就知道他是对应 for 的,只要向上找到我的第一个 for,那肯定就是与它对应的 end for,这是第二个,所以我就找第二个就行了,那如果有 end if,我去找对应的第一个 if 开始就可以,他很容易去帮助我们后期去维护这些关系。

这就不用 PHP 写一个 HTML  ,接下来想要做的事情就是在这里面输出一个九九乘法表,用我们的标记语言,我们首先要肯定有一个 table 标签 ,这个是我们不可避免的 table 标签,之后里面就是对应的 TR、TD,但是 TR、TD 这个时候就必须要靠循环来实现,所以此时我们就需要写上 <? ,然后 $i =1;$i<=9;$i++,那么此时理论上是不是要大括号了,但是此时我们用一个冒号把它结束,但是这个循环还没有结束啊。为什么不结束?因为接下来要输出一个对应的叫做 TR 标签了,因为没有这个 TR,就没有换行,这个代表着一个换行,同样的什么时候该结束,TR 结束了之后,这个循环也就结束了。

image.png

如上图,我们自己来访问一下发现什么都没有,看一下源代码会发现不是什么都没有,是有很多行的,有九行,只是因为旁边没有数据,如果你要在里面加数据的话,这个表格就可以看出来效果。试试看随便放一个数据,然后会发现是不是有这样的一个东西,

image.png

正常这个里面没有 TD,接下来把它写完,里面自然是要放 TD,我们知道又要用 TD,因为这个地方我们还需要$j=1;$j<=$i;$j++还需要一个这个东西,又给他一个冒号就行,而这个里面我们要做的事情就是一个 TD,好了一组 TD 下来,那么此时结束,我们这个里面都放一个 d 放一个字母。

image.png

如上图次效果对应一个乘法表的这个内容就出现了,这是一个表格,表格里面我们还要输出内容,所以又得用 PHP 代码,然后输出数据了,echo “$j * $i =”. $j * $i ;?就可以了,这是我们的一种简化版,那么此时也不需要判定了,这样一来你会发现其实我们这个结构,如果你要是真的写好的话,还是比较清晰的,你看这个地方有 for,它有一个对应的 end for,你显示这一组 TD 控制着每一个表格,然后里面有对应了一个内容,结构就很清晰,效果图达到就完成了,这就是一种标签语法或者叫标记语法都可以。

image.png

那当然你如果说我要 end if,end while,end for, end each 都是一样的,这种方式的话,我们看起来它就很清晰,这就是标记语言啊,或者说标记的一种语法标签,那这个图它到底是怎么显示的?比如当 for 循环 php 执行到这的时候,后面是 TR 然后后面再接,可以忽略掉这个标记,是我内部的,但是 TR 怎么解释,来看一个流程分析一下。


四、流程图示例

image.jpeg

他去解析上述这段代码,然后解析的过程中,他判定当前你的代码是 PHP HTML 如何去判定 PHP 标记你有没有小于号、问号。如果是 PHP,他把它解析成 HTML,在解析的过程,又发现这个标签结束了,但是很明显的,他没走完。这个时候他要判定你这个分支跟循环是否结束了,如果结束了,那说明这一段代码整个解析就直接完成了,就组合就行了,但如果没有结束,那说明 HTML 代码属于 PHP 的一部分。

解析到这说明没有结束,他继续往下读,读到了这个说明不是代码,但是它属于在这个循环里面,它会把它放在这个循环内部,当作相当于 echo 这个东西来输出,加一个 echo 保留,再往下面走,发现不单没有结束,又新开了一个,继续走,又把它输出,直到这个地方比较突出。输出之后发现这个循环还没有结束,继续往下读读到这个又把它保留输出,再往下走, 走到了一个 for 结束,代表当前的一个 for 结束,看看你这个 J 是否满足条件,再来不断的做这样的一件事情,直到他走完了之后,再回到 TR 又来一次,其实本质 TR 标记也好,TD 标记也好,只是变成原来 echo 。这个 echo 就是这一部分,它系统相当于把它拿进来而已,最终就变成这样的一个效果。我们再看那如果说,在这个里面发现 HTML,直接就是 HDML 最终保留就行,组合就行,组合完就是一个完全没有 PHP 的,因为已经完全解析完毕,最终保留的纯 HTML 交给浏览器去解析就可以了,这就是标签语法的一个流程。


五、小结

标签语法是 PHP 基本语法的一种替代方式,其实它本质替代的是大括号,它适用于分支和循环这两种,它的一个替代本质就是替代一对花括号,因为花括号它没有一个明确的目标,尤其是当嵌套的时候,所以我们用这种方式来替代,左边就直接用冒号就行,而右边,是用 end +当前的一个标记,内容是循环 for,那就是负1/4这样的一个过程。标记语法一般是为了方便前后端分离,主要是把对应的 X 的标记给他拿出来,方便我们对应的前端人员去进行一些样式或者属性的。而对于我们后台它也有帮助,因为当我们的层次比较多的时候,比如说多种循环嵌套,还有分支结构的时候,大括号我们就摸不清楚了,最麻烦的一点是因为后续要做一个这样的标题,这个标题很难去匹配,因为这个很容易改错,所以有了这种方式之后我就知道 for 对应 for,我去找上面就行,甚至都有一些对应,这种关系就很容易帮助我们去查看,做一个后端开发人员。最后扩展,如果 PHP 中也可以直接使用这种标记语法,但是不建议这样去做,if 包括 end if 也是可以的,但是用大括号其实还是比较清晰的,所以它不存在那种问题,以上是标签语法的内容。

相关文章
|
11月前
element plus 表单验证的字段名解释以及使用方法
element plus 表单验证的字段名解释以及使用方法
102 0
|
C#
Markdown各标签使用用法
标签和文本之间要有一个空格
114 0
|
移动开发 前端开发 JavaScript
CSS样式(一)- 基本语法
CSS样式(一)- 基本语法
159 0
CSS样式(一)- 基本语法
|
编译器 Go
第四十六章 开发自定义标签 - 标签匹配 操作中的运行时表达式
第四十六章 开发自定义标签 - 标签匹配 操作中的运行时表达式
|
分布式计算 图计算 Spark
打标签_完成| 学习笔记
快速学习打标签_完成
156 0
打标签_完成| 学习笔记
|
数据采集 搜索推荐 开发者
h1到h6标签|学习笔记
快速学习h1到h6标签
93 0
|
Dubbo Java 应用服务中间件
标签解析|学习笔记
快速学习标签解析,介绍了 Dubbo 在启动过程中如何解析配置文件。
154 0
标签解析|学习笔记
|
开发者
注释标签|学习笔记
快速学习注释标签
注释标签|学习笔记
|
Web App开发 移动开发 前端开发
标签| 学习笔记
快速学习标签。
91 0