我们先看一个最简单的系统标签:{$Copyright},这个标签的作用是显示网站的版权信息,这个标签是如何解析的呢? 我们可以查找一下源代码(这里可以借助一些有查找功能的工具,比如说用DreavWeaver),可以发现在Include文件夹里面的PowerEasy.Common.Front.asp文件里面有这样一行代码(2657行左右): strHtml = PE_Replace(strHtml, "{$Copyright}", Copyright) 这行代码的作用就是将查找strHtml字符串的内容,然后将里面的{$Copyright}替换成Copyright这个变量的内容。 可能这里有人会有这样的疑问,strHtml是什么内容?Copyright这个变量的内容又是什么?可以这样理解,strHtml是一个字符串,字符串里面存放的是模板代码,Copyright是一个全站变量,他的内容对应网站的版权信息。 同理,我们可以增加一个最简单的系统标签,比如我们再这行代码下面加入: strHtml = PE_Replace(strHtml, "{$MyName}", "路人甲") 那么当你在模板里面插入{$MyName}这个标签时,解析的时候就可以解析成路人甲了。 接下来我们看看{$ShowLogo}这个标签是如何解析的,往下查我们可以看到2661行左右有这样的代码: If InStr(strHtml, "{$ShowLogo}") > 0 Then strHtml = Replace(strHtml, "{$ShowLogo}", GetLogo(180, 60)) 这里是先查找是否存在$ShowLogo}这个标签,存在的话将这个标签的内容替换成GetLogo(180, 60)这个函数的内容, GetLogo(180, 60)函数是定义在哪里的?我们同样可以查找一下,在这个文件的582行左右就可以找到这个函数的定义。 到这里,可能有人会有这样的疑问,如果我们要解析的系统标签是带参数的,那系统是如何解析的? 下面我们来看一下{$ShowLogo(width,height)}这个标签是如何解析的。 带参数的系统标签跟不带参数的系统标签解析方法是不同的,我们可以看一下以下一段代码 '替换Logo regEx.Pattern = "\{\$ShowLogo\((.*?)\)\}" Set Matches = regEx.Execute(strHtml) For Each Match In Matches arrTemp = Split(Match.SubMatches(0), ",") If UBound(arrTemp) <> 1 Then strLogo = "函数式标签:{$ShowLogo(参数列表)}的参数个数不对。请检查模板中的此标签。" Else strLogo = GetLogo(arrTemp(0), arrTemp(1)) End If strHtml = Replace(strHtml, Match.Value, strLogo) 这段代码就是查找系统函数标签的一个简单例子,我们逐句来解读一下: regEx.Pattern = "\{\$ShowLogo\((.*?)\)\}" 这个是一个正则表达式,由于在正则表达式里面{,$,(,),}都是特殊符号,要把他转换成普通字符处理,前面需要加上“\”,(.*?)表示匹配除换行符之外的字符,也就是说程序会查找{$ShowLogo(****)}这样的内容(***代表任何除换行符外的任何字符),如果有找到这个内容,那么程序就把它当成一个系统函数标签来处理。 Set Matches = regEx.Execute(strHtml) 这里执行模式匹配,也就是在查找模板中是否存在要查找的函数标签。 For Each Match In Matches 这里对匹配的结果进行处理 arrTemp = Split(Match.SubMatches(0), ",") Split函数的作用是分隔字符串,这段代码的作用就是对函数进行处理,用逗号来分隔,将分隔出来的存放在arrTemp数组中,也就是第一个参数存放在arrTemp(0)中,第二个参数存放在arrTemp(1)中,这样依次存放。 If UBound(arrTemp) <> 1 Then strLogo = "函数式标签:{$ShowLogo(参数列表)}的参数个数不对。请检查模板中的此标签。" Else strLogo = GetLogo(arrTemp(0), arrTemp(1)) End If If UBound(arrTemp) <> 1 Then这里是判断arrTemp这个数组有多少个数值,因为我们是从0开始计算的,第一个参数存放在arrTemp(0)中,所以这里的If UBound(arrTemp) <> 1 Then其实就是判断参数是不是2个(注意不是1个),不是的话就输出 strLogo = "函数式标签:{$ShowLogo(参数列表)}的参数个数不对。请检查模板中的此标签。" 如果参数是2个的话,就将这两个参数传递给GetLogo()这个函数,GetLogo()这个函数是带返回值的,strLogo = GetLogo(arrTemp(0), arrTemp(1))就是用strLogo这个变量来记录这个函数的执行结果。 strHtml = Replace(strHtml, Match.Value, strLogo) 这个代码就是用我们得到的结果来替换正则表达数找到的函数标签了,到此,这个系统标签的解析就算结束了。
分享到:
相关推荐
模板引擎是CMS系统必备的核心架构之一,它的功能可以做得很强大,如动易的模板引擎,标签库也可以做得很强大,很完善,这里只是简单的对模板引擎原理作演示。此源码包含功能强大的标签解析类:GetHtml.cs 此源码只...
RFID系统主要由阅读器、射频标签和软件系统组成,广泛应用于物流、零售、医疗、资产管理等领域。 2.1 阅读器是RFID系统的核心硬件,它负责向射频标签提供能量,实现二者之间的通信。阅读器的功能包括为射频标签供电...
标签"STM32 STM32最小系统"进一步强调了这个资源包是关于STM32系列微控制器的,特别是构建其最小系统的方法和实践。 从"60918-STM32(C8T6)"这个文件名来看,这可能是一个包含所有相关资料的文件,如PCB设计文件...
而标签“通信系统原理”则明确强调了这本书的核心主题,即通信系统的基础理论及其应用。结合《高等学校试用教材 通信系统原理习题集》这一文件名,我们可以推测这是一份专门针对高校通信工程教育的习题集,具有很高...
综合这些标签,这个题库可能包含了一系列关于C++编程、操作系统原理和计算机组成原理的问题,旨在帮助学习者巩固理论知识,提高实践技能。这些问题可能涵盖编程题、概念解释题、分析题和设计题,覆盖了从基础到高级...
这样的项目通常会包括系统的功能需求分析、系统架构设计、硬件选型、软件编程(如微控制器编程)以及电气原理图的设计等环节。 标签“源码软件”提示我们,这个压缩包内应该包含用于控制国旗升降的软件源代码。源...
这些答案详尽地解析了每个问题,帮助读者掌握关键概念,提高分析和解决问题的能力。 在文档“微型计算机系统原理及应用第五版课后答案.doc”中,可能包含以下内容: 1. CPU工作原理:详细解释了指令执行流程,包括...
RFID 系统的工作原理是基于射频识别技术的,主要由阅读器、电子标签、中间件和应用系统软件组成。阅读器是 RFID 系统的核心组件,负责与电子标签的双向通信,接收来自主机系统的控制指令。阅读器的频率决定了 RFID ...
### RFID智能标签技术原理及优势深度分析 #### 一、引言 随着我国市场经济的快速发展,商品流通市场的活跃性日益增强。然而,由于市场规范化程度不足以及法律法规建设相对滞后,假冒伪劣商品在市场上泛滥成灾,...
- 高频标签(HF,通常在13.56MHz),常用于电子护照、智能卡和支付系统。 - 超高频标签(UHF,通常在860MHz-960MHz),适合远距离读取,广泛应用于供应链管理和库存跟踪。 - 微波标签(通常在2.45GHz或5.8GHz),...
《大规模分布式存储系统:原理解析与架构实战》是一本深度探讨分布式存储系统核心概念、设计原理和技术实现的专业书籍。本书旨在帮助读者深入理解分布式存储系统背后的复杂性,并提供实践指导,以应对日益增长的数据...
此外,标签“LINUX”表明这本教材还涵盖了Linux内核的架构和工作原理,可能包括模块加载、内核版本管理等内容。Linux作为一个开源操作系统,它的源代码可以为学习者提供深入理解操作系统的珍贵机会。 最后,压缩包...
7. **报告**:项目报告通常会涵盖系统的设计背景、技术选型、工作原理、硬件与软件设计流程、测试结果和问题分析等内容,为后续的改进和维护提供参考。 综上所述,STM32的RFID智能门禁系统设计是一个集成了微处理器...
Matlab仿真分析通常包含几个关键步骤:首先是建立系统的数学模型,包括RFID标签和料带的数学模型。在这个模型的基础上,可以推导出光电检测模型和RFID的测试模型,它们能够模拟系统的检测机制。伺服系统驱动料带的...
这篇内容丰富的PPT涵盖了雷达系统的基本原理、设计方法以及最新的发展趋势。 首先,我们要理解雷达的定义:Radar,即无线电检测和测距(Radio Detection and Ranging),是通过发射无线电波并接收其反射回来的信号...
标题“STM32F103ZET6最小系统板PCB+原理图”所涉及的知识点主要涵盖了以下内容: 1. **STM32F103ZET6微控制器**:STM32F103ZET6属于STM32F1系列,具有72MHz的工作频率,内置512KB闪存和64KB RAM,拥有128个引脚,...
“文件系统原理精解”则可能指深入解析不同操作系统和存储介质中文件系统的工作方式,包括但不限于FAT、NTFS、EXT3、EXT4、HFS+、ZFS等文件系统。这些文件系统负责存储、检索和更新数据,因此对于数据恢复工程师来说...
通过对“SMT贴片机上料指示防错系统-灯板原理图.pdf”文件的分析,我们可以了解到这是一个专为SMT贴片机设计的上料指示防错系统的灯板原理图。它采用了STM32F103RBT6作为主控芯片,配以23个LED灯作为显示单元,并...
学生成绩查询统计系统作为其中的重要组成部分,它能够高效地管理和分析学生的学习成绩,为教师的教学评估和学生的学习进步提供有力支持。本设计将深入探讨如何利用微机原理与应用技术,构建一个实用、易用的成绩管理...
### RFID标签技术原理、优势及运用设想 #### 一、RFID技术概述 RFID(Radio Frequency Identification,射频识别)技术是一种先进的自动识别技术,它利用电磁感应、无线电波或微波进行非接触式的双向通信,从而...