XML语言课件:第6章_XML与PHP_第1页
XML语言课件:第6章_XML与PHP_第2页
XML语言课件:第6章_XML与PHP_第3页
XML语言课件:第6章_XML与PHP_第4页
XML语言课件:第6章_XML与PHP_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第6章章 XML与与PHP 一个简单的一个简单的PHP程序示例程序示例 Hello World! PHP代码的基本语法代码的基本语法v PHP是一种可嵌入到是一种可嵌入到HTML中的脚本语言中的脚本语言v PHP文件以文件以“.php”为扩展名,代码可包含为扩展名,代码可包含HTML代码代码和和PHP代码。代码。v PHP代码位于代码位于“”之间之间“”: 表示脚本的开始和结束表示脚本的开始和结束PHP代码的基本语法代码的基本语法v 语句分隔符:分号语句分隔符:分号“;” echo “Web程序设计程序设计”; v PHP代码的注释代码的注释 (1)单行注释()单行注释(/或或#) (2)多

2、行注释()多行注释(/* */) PHP的数据类型的数据类型PHP 支持八种原始类型。支持八种原始类型。v 1四种标量类型四种标量类型 布尔型(布尔型(boolean)、整型()、整型(integer) 浮点型(浮点型(double)、字符串()、字符串(string)v 2复合类型复合类型 数组(数组(array)、对象(、对象(object)v 3两种特殊类型两种特殊类型 资源(资源(resource):保存到外部资源的一个引用):保存到外部资源的一个引用 NULL:表示一个变量没有值:表示一个变量没有值PHP的常量和变量的常量和变量1.常量常量vPHP中使用中使用define()函数来定

3、义符号常量函数来定义符号常量. 格式格式: define(“常量名称常量名称”, 值值);v使用使用defined()函数可以判断一个常量是否已被定义函数可以判断一个常量是否已被定义 例:例:PHP的常量和变量的常量和变量2. 变量:美元符后跟变量名变量:美元符后跟变量名, $变量名变量名$name = 张小龙张小龙;vPHP的变量是一种弱类型变量,不需要事先声明,通的变量是一种弱类型变量,不需要事先声明,通过赋值将其初始化为任何数据类型。过赋值将其初始化为任何数据类型。 PHP变量必须是变量必须是$后跟变量名后跟变量名, 区分大小写区分大小写 变量名由字母或下划线开头变量名由字母或下划线开头

4、, 后跟任意数量的字母、后跟任意数量的字母、数字或者下划线数字或者下划线 不能使用系统的保留字作为变量名不能使用系统的保留字作为变量名 运算符和表达式运算符和表达式v 1. 算术运算符算术运算符 加(加(+)、减()、减(-)、乘()、乘(*)、除()、除(/)、取余()、取余(%)v 2. 连接运算符连接运算符连接运算符只有一个,即连接运算符只有一个,即“.”,用于将两个字符串连,用于将两个字符串连接起来接起来 提示:如果提示:如果“.”的左右有数字,注意将的左右有数字,注意将“.”和数字和数字用空格隔开用空格隔开运算符和表达式运算符和表达式v 3. 赋值运算符赋值运算符 最基本的赋值运算符

5、是最基本的赋值运算符是“=” PHP还支持赋值运算符与其他运算符的缩写形式,如还支持赋值运算符与其他运算符的缩写形式,如“+=”、“.=”、“&=”、“/=”等。等。 运算符和表达式运算符和表达式v 4. 比较运算符比较运算符 包括是否相等(包括是否相等(=)、大于()、大于()、小于()、小于(=)小于等于()小于等于(=)、不等于()、不等于(!=或或)、)、恒等于(恒等于(=)、非恒等于()、非恒等于(!=)v 5. 逻辑运算符逻辑运算符 有逻辑非(有逻辑非(!)、逻辑与()、逻辑与(&或或and)、逻辑或()、逻辑或(|或或or)、逻辑异或()、逻辑异或(xor) 提示

6、:提示:“&”的优先级比的优先级比“and”高,高,“|”的优先的优先级比级比“or”高高运算符和表达式运算符和表达式v 6. 加加1、减、减1运算符运算符 包括前加(包括前加(+$a)、后加()、后加($a+)、前减()、前减(-$a)、)、后减(后减($a -)4种形式种形式 v 7. 条件运算符条件运算符 条件表达式条件表达式 ? 表达式表达式1 : 表达式表达式2 其含义是:如果其含义是:如果“条件表达式条件表达式”的值为的值为“true”则取则取“表达式表达式1”的值,否则取的值,否则取“表达式表达式2”的值。的值。PHP的输出的输出v 数据输出数据输出: 向浏览器输出字符串

7、向浏览器输出字符串 echo 字符串字符串1, 字符串字符串2, 字符串字符串n; print(字符串字符串); 或或 print 字符串字符串; 注:注:echo没有返回值,比没有返回值,比print运行速度快。运行速度快。PHP的输入的输入v 获取从浏览器发来的表单数据获取从浏览器发来的表单数据 1)接收表单以)接收表单以GET方式发送的数据方式发送的数据(URL参数参数) 通过超全局数组通过超全局数组: $_GET“表单输入项名称表单输入项名称” 2)接收表单以)接收表单以POST方式发送的数据方式发送的数据 通过超全局数组通过超全局数组: $_POST“表单输入项名称表单输入项名称”

8、其中其中“表单输入项名称表单输入项名称”是指表单输入项是指表单输入项name属性的属性的值值例例:获取以获取以GET方式提交的信息方式提交的信息/* 在客户端输入:在客户端输入:http:/localhost/hello.php?name=Brown */ Hello 例:以例:以POST方式提交信息方式提交信息我的爱好我的爱好 姓名姓名: 喜爱的运动喜爱的运动: 例:获取以例:获取以POST方式提交的信息方式提交的信息 我的爱好我的爱好PHP的字符串的字符串v PHP规定字符串的两边必须加上单引号(规定字符串的两边必须加上单引号()或双引号)或双引号() 单引号表示包含的是纯粹的字符串单引号

9、表示包含的是纯粹的字符串 双引号中可以包含字符串和变量名。双引号中可以包含字符串和变量名。 双引号中如果包含变量名则会被当成变量,会自动被双引号中如果包含变量名则会被当成变量,会自动被替换成变量值替换成变量值 字符串用法例字符串用法例?php $a=tang;$b=10;echo 你好你好$a; /使用单引号输出使用单引号输出$aecho ; echo 你好你好$a; /使用双引号输出变量使用双引号输出变量echo 你是第你是第 $b 次光临次光临; ? 双引号支持的转义字符及含义双引号支持的转义字符及含义 n: 换行换行r: 回车回车t: Tab: 双引号双引号: 反斜杠反斜杠$: 美元符美

10、元符$常用字符串函数常用字符串函数v int strlen(string str): 字符串长度(一个中文字符算字符串长度(一个中文字符算2个个字节)字节)v int strcmp(string str1, string str2) :字符串比较字符串比较 若若str1str2,则返回,则返回-1; 若若str1=str2,则返回,则返回0; 否则返回否则返回1。v int strpos(string str, string find) :字符串定位:字符串定位 返回子串返回子串find在在str中第中第1次出现的位置,若次出现的位置,若str中不存中不存find子串则返回子串则返回false

11、。v string substr(string str, int start, int length):截取:截取子串子串日期和时间函数日期和时间函数v string date(string format, int stamp) 返回时间戳指定的日期和时间返回时间戳指定的日期和时间. 如果不指定时间戳如果不指定时间戳, 这是当这是当前日期和时间前日期和时间.date()常用常用format参数参数参数参数说说 明明返回值例子返回值例子d2位数字表示月份中的第几天位数字表示月份中的第几天01到到31w1位数字表示星期几位数字表示星期几0(周日)到(周日)到6(周六)(周六)m m2位数字位数字表

12、示月份表示月份0101到到1212Y4位数字完整表示的年份位数字完整表示的年份如如1999或或2003y2位数字表示的年份位数字表示的年份如如99或或03h小时,小时,12小时格式,小时格式,2位数字位数字01到到12H小时,小时,24小时格式,小时格式,2位数字位数字00到到23i分钟数,分钟数,2位数字位数字00到到59s秒数,秒数,2位数字位数字00到到59 日期和时间函数日期和时间函数vint time() 返回当前时间的时间戳。返回当前时间的时间戳。 时间戳是指从时间戳是指从1970/1/1日日0:0:0到指定日期所经过到指定日期所经过的秒数。的秒数。 ?php$nextWeek =

13、 time() + (7 * 24 * 60 * 60); /1周周=7天天*24小时小时*60分分*60秒秒echo 现在是:现在是:. date(Y-m-d) .;echo 下一周是下一周是: . date(Y-m-d, $nextWeek) ;? 日期和时间函数日期和时间函数vint mktime(时时,分分,秒秒,月月,日日,年年) 返回自行设置的时间的时间戳。返回自行设置的时间的时间戳。 echo date(Y-m-d,mktime(0,0,0,12,36,2015); echo date(Y-m-d,mktime(0,0,0,date(m), date(d)+12,date(Y);

14、 条件控制语句条件控制语句条件控制语句条件控制语句v1. 单分支选择单分支选择if语句语句 if(条件表达式条件表达式) 语句块语句块 v2. 双分支选择双分支选择ifelse语句语句if (条件表达式条件表达式) 语句块语句块1 else 语句块语句块2 条件控制语句条件控制语句v 3. 多分支选择多分支选择ifelseifelse语句语句 v 4. switch/case语句语句switch(变量或算术表达式变量或算术表达式)case(常量常量1): 语句块语句块1; break;case(常量常量2): 语句块语句块2; break;case(常量常量n):语句块语句块n; break;

15、default: 语句块语句块n+1循环控制语句循环控制语句循环控制语句循环控制语句v1. for循环循环for (初始表达式初始表达式; 循环条件表达式循环条件表达式; 计数器表达式计数器表达式) 循环体语句块循环体语句块 v2. while循环循环 while (条件表达式条件表达式) 循环体语句块循环体语句块 循环控制语句循环控制语句v 3. do循环循环 do 循环体语句块循环体语句块 while (条件表达式条件表达式); v 4. break语句语句 终止循环,执行循环语句的下一条语句终止循环,执行循环语句的下一条语句v 5. continue语句语句 中断当前的循环,执行下一个循

16、环中断当前的循环,执行下一个循环PHP数组数组 v PHP数组的特点数组的特点 数组索引数组索引(下标或键下标或键)的值可以是数值也可以是字符串的值可以是数值也可以是字符串 索引值是整数的称为索引值是整数的称为索引数组索引数组 索引值是字符串的称为索引值是字符串的称为关联数组关联数组 数组长度可以自由变化数组长度可以自由变化 同一数组中各元素的数据类型可以不同同一数组中各元素的数据类型可以不同 数组的创建数组的创建使用使用array()函数创建数组函数创建数组v简单形式简单形式:索引值自动分配为从索引值自动分配为从0开始的正整数开始的正整数 $citys=array( 长沙长沙,衡阳衡阳,常德

17、常德,湘潭湘潭);v完整形式完整形式:分别指定索引值和元素值分别指定索引值和元素值, 索引和值由索引和值由=连接连接 $citys=array(cs=长沙长沙,hy=衡阳衡阳,cd=常德常德,xt=湘潭湘潭);索引索引值值访问数组元素访问数组元素v 数组名数组名索引索引 如:如:$name=$citys3; echo $cityscs; v 遍历数组元素遍历数组元素$citys=array( “沈阳沈阳”,“长春长春”,“哈尔滨哈尔滨”,“大连大连);for(i=0; icount($citys); i+)echo $citysi;访问整个数组访问整个数组v 数组名代表整个数组,将数组名赋值给

18、变量能够复制该数组名代表整个数组,将数组名赋值给变量能够复制该数组数组 v 数组名前加数组名前加“&”表示该数组的地址表示该数组的地址 foreach循环语句循环语句foreach语句专门用于遍历数组元素语句专门用于遍历数组元素v格式格式1:foreach ($数组名数组名 as $值值) . v格式格式2:foreach ($数组名数组名 as $索引索引=$值值) . ?php $colors = array(Blue, red, green, yellow); foreach ($colors as $color) echo “Your favorite color is $co

19、lor; $ages = array(Bob = 42, Mary = 43); foreach ($ages as $name = $age) echo $name is $age years old ; ?常用数组的排序和查找函数常用数组的排序和查找函数v sort(array arr) 根据元素值对数组排序,并用数字根据元素值对数组排序,并用数字0、1、2、 替换替换原来的键。原来的键。v asort(array arr) 根据元素值对数组排序并保持原来的键和值的对应关根据元素值对数组排序并保持原来的键和值的对应关系。系。v ksort(array arr) 根据元素键对数组排序并保持原

20、来的键和值的对应关根据元素键对数组排序并保持原来的键和值的对应关系。系。常用数组的排序和查找函数常用数组的排序和查找函数v array_search(mixed value, array arr, bool strict) 在数组中查找。如果找到了该值,匹配元素的键名会在数组中查找。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回被返回。如果没找到,则返回false。v array_key_exists(mixed key, array arr) 判断某个数组中是否存在指定的键名判断某个数组中是否存在指定的键名 key,如果该,如果该 key 存在,则返回存在,则返回 true,否则

21、返回,否则返回 false。 Sorting 31, Al = 27, Gandalf = wizzard, Betty = 42, Frodo = hobbit); ? Original Array $value) print($key = $value ); $new = $original; sort($new); ? Array sorted with sort $value) print($key = $value ); $new = $original; asort($new); ? Array sorted with asort $value) print($key = $val

22、ue ); $new = $original; ksort($new); ? Array sorted with ksort $value) print($key = $value ); ? 数组与字符串间的转换数组与字符串间的转换v 将字符串拆成数组将字符串拆成数组 array explode(seperator, string, limit) 将字符串以该字符串中的将字符串以该字符串中的seperator为分隔符进行拆为分隔符进行拆分分, 并把拆分出来的子串作为元素形成一维数组并把拆分出来的子串作为元素形成一维数组. limit指定数组元素的最大个数指定数组元素的最大个数v 将数组合并成字

23、符串将数组合并成字符串 string implode(connector, array) 把数组中的元素由把数组中的元素由connector连接形成一个字符串连接形成一个字符串.多维数组多维数组创建多维数组创建多维数组 v$arr = array(array(玫瑰玫瑰,百合百合,兰花兰花), array(苹果苹果,香蕉香蕉,葡萄葡萄,龙眼龙眼) ); 玫瑰玫瑰百合百合兰花兰花苹果苹果香蕉香蕉葡萄葡萄龙眼龙眼由于这个语句没有给索引赋值,默认的索引如下由于这个语句没有给索引赋值,默认的索引如下00000101020210101111 12121313访问多维数组的元素访问多维数组的元素 v 使用使

24、用“数组名数组名 索引索引11索引索引2”2”的形式的形式 访问二维数组元素访问二维数组元素例如:例如:echo $arr12;/访问数组元素,输出葡萄访问数组元素,输出葡萄$arr03=茉莉茉莉; /添加数组元素添加数组元素$arr13=桂圆桂圆; /修改数组元素修改数组元素unset($arr10);/删除数组元素删除数组元素print_r($arr); /输出数组的结构输出数组的结构v 输出结果为:输出结果为:葡萄葡萄 Array (0 = Array ( 0 = 玫瑰玫瑰 1 = 百合百合 2 = 兰花兰花 3 = 茉莉茉莉 ) 1 = Array ( 1 = 香蕉香蕉 2 = 葡萄葡

25、萄 3 = 桂圆桂圆 ) 函数的定义和调用函数的定义和调用v函数的定义语法格式:函数的定义语法格式:function 函数名函数名 (形参形参1, 形参形参2, , 形参形参n) 函数体函数体return 返回值返回值 函数的调用函数的调用v 调用形式为:调用形式为:函数名函数名(实参实参1, 实参实参2, , 实参实参n);?phpfunction hello($n,$str) for($i=0;$i 变量的作用域变量的作用域 v 局部变量:定义在函数内部的,只有这个函数内的代码局部变量:定义在函数内部的,只有这个函数内的代码才可使用该变量才可使用该变量v 全局变量:定义在所有函数外的,则其

26、作用域是整个全局变量:定义在所有函数外的,则其作用域是整个PHP文件,减去用户自定义的函数内部文件,减去用户自定义的函数内部v 函数内部不能直接引用全局变量。要在函数内部引用全函数内部不能直接引用全局变量。要在函数内部引用全局变量必须使用关键字局变量必须使用关键字global来声明来声明变量的作用域例题变量的作用域例题v使用使用global关键字关键字 类与对象类与对象 v 类的定义:类的定义:class 类名类名定义成员变量定义成员变量定义成员函数定义成员函数 userName; ? 类与对象类与对象 对象的定义:对象的定义:v使用使用new关键字来创建对象关键字来创建对象 $user=ne

27、w userInfo();v可使用对象来访问类中的成员变量或成员方法可使用对象来访问类中的成员变量或成员方法 $user=new userInfo(); echo $user-userName;/访问类中的变量访问类中的变量 $user-output();/访问类中的函数访问类中的函数 v注意:注意:PHP中对象的成员操作符是中对象的成员操作符是“-”而不是点而不是点“.”。操作操作XML文档文档v 创建创建XMLXML对象对象 $dom=new DOMDocument(string version, string encoding) v 加载加载XMLXML数据数据 加载加载XMLXML字符

28、串字符串: : $dom-loadXML(string source , int options) 加载加载XMLXML文档文档: : $dom-load(string filename , int options) 操作操作XML文档文档v 输出输出XML对象内容对象内容 输出输出XML字符串:字符串: $dom-saveXML(DOMNode node , integer options) 输出到文件:输出到文件: $dom-save(string filename , integer options) 操作操作XML文档文档?php /用用DOMDOM装入装入XMLXML文档然后输出文档

29、然后输出XMLXML文档文档 $xmldata = 子节点内容子节点内容; $dom = new DOMDocument(1.0); /创创建XML对对象 $dom-loadXML($xmldata); /加载载XML文档档 print $dom-saveXML(); /输出输出XML字符串字符串?操作操作XML文档文档v XPath表达式的求值表达式的求值1. 创建创建XPath对象对象$xpath = new DOMXpath(DOMNode node);2. 对对XPath表达式求值,结果为节点列表表达式求值,结果为节点列表$elements = $xpath-query(string

30、xpath , DOMNod contextNode);操作操作XML文档文档load(“catalog.xml”); /加载载XML文档档 $xpath=new DOMXpath($doc); /创创建Xpath对对象 /对对xpath表达达式进进行求值值 $elements=$xpath-query(“/*price10”); /遍历历求值结值结果的节节点列表 foreach ($elements as $element) echo $element-textContent, ;? 操作操作XML文档文档v XSL转换转换1. 创建创建XSLT对象对象$proc = new XSLTPro

31、cessor(); 2. 导入导入XSL样式表样式表, 参数为参数为XSL样式表的文档对象样式表的文档对象 $proc-importStylesheet(DOMNode xsl);3. 进行进行XSL转换转换, 参数为参数为XML文档对象文档对象, 结果为字符串结果为字符串 $proc-transformToXML(DOMNode xml);操作操作XML文档文档load(cdcatalog.xsl); $xmlDoc = new DOMDocument(); $xmlDoc-load(cdcatalog.xml); $proc = new XSLTProcessor(); $proc-imp

32、ortStylesheet($xslDoc); echo $proc-transformToXML($xmlDoc);?操作操作XML文档文档v 有关对象有关对象DOMDocument其它的属性和方法请参考第其它的属性和方法请参考第5章的相关内容,此处不再重复。章的相关内容,此处不再重复。操作操作XML文档文档综合实例:留言板综合实例:留言板v程序及功能列表:程序及功能列表: index.php:主页面,显示留言列表:主页面,显示留言列表 note_input.html:留言输入页面:留言输入页面 note_save.php:留言保存页面,把用户在留言输入:留言保存页面,把用户在留言输入页面输

33、入的留言信息保存到页面输入的留言信息保存到XML文件里文件里 deletenotes.php:留言删除页面,删除被勾选的留:留言删除页面,删除被勾选的留言并把更新保存到言并把更新保存到XML文件里文件里 note.xml:以:以XML格式保存的留言信息格式保存的留言信息 dispdetails.xsl:留言明细输出:留言明细输出XSL转换样式表转换样式表显示留言版 function deleteNotes(oForm) var chkbx=oForm.getElementsByTagName(input); var rows=false; for(var i=0; ichkbx.length;

34、 i+) if(chkbxi.type=checkbox & chkbxi.checked) rows = true; break; if(!rows) alert(没有要删除的留言,n请勾选要删除的留言。); return false; if(confirm(要删除所勾选的留言吗?) return true; else return false; table border-collapse:collapse; table,td,th border:1px solid black; .button border:0px;font-weight:bold;留 言 板序号作者留言内容时间I

35、P地址load(dispdetails.xsl); $xmlDoc = new DOMDocument(); $xmlDoc-load(note.xml); /进行XSL转换 $proc = new XSLTProcessor(); $proc-importStylesheet($xslDoc); echo $proc-transformToXML($xmlDoc);?输入留言 index.php输入留言 function goMain() location.href=index.php; function checkinput() input=document.getElementById(

36、user_name); if(input.value=) alert(输入项署名不能为空。); return false; input=document.getElementById(post_contents); if(input.value=) alert(输入项留言不能为空。); return false; return true; .in width:220px; 请输入留言 署名: 留言: note-input.html提交结果?php $fn=note.xml; date_default_timezone_set(Asia/Shanghai); $name = $_POSTuser_name; $contents = $_POSTpost_contents; $ip = $_SERVERREMOTE_ADDR; $tm = date(Y/m/d H:i); /转换回车符 $contents = str_replace(n,$contents); /创建XML对象 $xmlDom=new DOMDocument(1.0,utf-8); /加载XML文档 if(file_exists($fn) $xmlDom - load($fn); else $xmlDom - loadXML

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论