十天学会PHP之基础知识_第1页
十天学会PHP之基础知识_第2页
十天学会PHP之基础知识_第3页
十天学会PHP之基础知识_第4页
十天学会PHP之基础知识_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、十天学会PHP之根底知识这篇是十天学会PHP的第一天,本套教程说的都是比拟根底的东西,建议刚开始接触PHP准备学习的朋友可以参考下。同时由于PHP的特殊性,大家可以对照PHP手册查看。以前写了十天学会ASP,十天学会什么的,现在想想再写个PHP吧,也算比拟全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB效劳器和数据库,在下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。 至于表单设计什么的,我这里也不想多说了,在?十天学会ASP?中已经有介绍。 下面

2、简单介绍一下PHP的语法。 1、嵌入方法: 类似ASP的%,PHP可以是?php或者是?,结束符号是?,当然您也可以自己指定。 2、引用文件: 引用文件的方法有两种:require 及 include。 require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。 include 使用方法如 include("MyIncludeFile.php&qu

3、ot;); 。这个函数一般是放在流程控制的处理局部中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 3、注释方法: ?php echo "这是第一种例子。n" ; / 本例是 C+ 语法的注释 /* 本例采用多行的 注释方式 */ echo "这是第二种例子。n" ; echo "这是第三种例子。n" ; # 本例使用 UNIX Shell 语法注释 ? 4、变量类型: $mystring = "我是字符串" ; $NewLine = "换行了n

4、" ; $int1 = 38 ; $float1 = 1.732 ; $float2 = 1.4E+2 ; $MyArray1 = array( "子" , "丑" , "寅" , "卯" ); 这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。 5、运算符号: 数学运算: 符号 意义 + 加法运算 - 减法运算 * 乘法运算 / 除法运算 % 取余数 + 累加 - 递减 字符串运算: 运算符号只有一个,就是英文的句号。它可以将字

5、符串连接起来,变成合并的新字符串。类似ASP中的amp; ? $a = "PHP 4" ; $b = "功能强大" ; echo $a.$b; ? 这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的%=变量%,PHP中也可以?=变量? 。 逻辑运算: 符号 意义 小于 大于 = 小于或等于 = 大于或等于 = 等于 != 不等于 amp;amp; 而且 (And) and 而且 (And) 或者 (Or) or 或者 (Or) xor 异或 (Xor) ! 不 (Not) 今天就说到这里,明天说一下流程控制。也就是十天学会PHP之流程

6、控制。希望大家可以通过本教程进入PHP的殿堂! 本篇文章来源于 PHP资讯 原文链接:十天学会PHP之流程控制这篇是十天学会PHP的第二天,说的是关于PHP的流程控制的教程,有if,for,switch这几种常用的流程控制语句。1、if.else 循环有三种结构 第一种是只有用到 if 条件,当作单纯的判断。解释成 "假设发生了某事那么怎样处理"。语法如下: if (expr) statement 其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行局部程序,假设程序只有一行,可以省略大括号 。 范例:本例省略大括号。

7、 ?php if ($state=1)echo "哈哈" ; ? 这里特别注意的是,判断是否相等是=而不是=,ASP程序员可能常犯这个错误,= 是赋值。 范例:本例的执行局部有三行,不可省略大括号。 ?php if ($state=1) echo "哈哈 ; echo "br" ; ? 第两种是除了 if 之外,加上了 else 的条件,可解释成 "假设发生了某事那么怎样处理,否那么该如何解决"。语法如下 if (expr) statement1 else statement2 范例:上面的例子来修改成更完整的处理。其中的

8、else 由于只有一行执行的指令,因此不用加上大括号。 ?php if ($state=1) echo "哈哈" ; echo "br" else echo "呵呵" echo "br" ? 第三种就是递归的 if.else 循环,通常用在多种决策判断时。它将数个 if.else 拿来合并运用处理。 直接看下面的例子 ?php if ( $a $b ) echo "a 比 b 大" ; elseif ( $a = $b ) echo "a 等于 b" ; else echo

9、"a 比 b 小" ; ? 上例只用二层的 if.else 循环,用来比拟 a 和 b 两个变量。实际要使用这种递归 if.else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。 2、 for 循环就单纯只有一种,没有变化,它的语法如下 for (expr1; expr2; expr3) statement 其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改

10、变条件,供下次的循环判断,如加一.等等。而 statement 为符合条件的执行局部程序,假设程序只有一行,可以省略大括号 。 下例是用 for 循环写的的例子。 ?php for ( $i = 1 ; $i = 10 ; $i +) echo "这是第".$i."次循环br" ; ? 3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令局部。在实作上假设使用许多类似的 if 指令,可以将它综合成 switch 循环。 语法如下 switch (expr) case expr1: statement1; break; ca

11、se expr2: statement2; break; default: statementN; break; 其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后那么为符合该条件要执行的局部。注意要用 break 跳离循环 ?php switch ( date ( "D" ) case "Mon" : echo "今天星期一" ; break; case "Tue" : echo "今天星期二" ; break; case "Wed&quo

12、t; : echo "今天星期三" ; break; case "Thu" : echo "今天星期四" ; break; case "Fri" : echo "今天星期五" ; break; default: echo "今天放假" ; break; ? 这里需要注意的是break;别遗漏了,default,省略是可以的。 上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的

13、机率相同,所以不用注意条件的顺序。 今天就说到这里,明天说一下数据库的使用。也就是十天学会PHP之数据库的使用。相对于昨天的知识来说今天的知识已经有些难度,但是大家一定要攻克这个难关,才能继续明天的数据库使用相关教程。 本篇文章来源于 PHP资讯 原文链接:十天学会PHP之构建数据库这篇是十天学会PHP的第三天,说的是关于PHP怎样去构建数据库,也就是用MySQL如何去创立一个数据库,说的比拟详细,大家看看吧。在PHP中,MY SQL的命令行编辑可能会令初学者感到很麻烦,不要紧,你下载一个PHPMYADMIN安装一下,以后建立编辑数据库可以靠它了。 下面说一下它的使用。 进入了phpmyadm

14、in后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创立一个新的数据库 这里填写数据库名字,点击创立即可。 然后在左边下拉菜单中选择那个已经创立的数据库。在下面的 在数据库 shop 中创立一个新表 : 名字 : 字段数 : 中填写表名字和大致你认为的字段数不够或者多了都不要紧,以后可以再添加或者缺省,按执行。 然后就可以开始建立表了。 第一栏是字段的名字;第二栏选择字段类型: 我们常用的是以下几个: 1VARCHAR,文本类型 2INT,整数类型 3FLOAT,浮点数类型 4DATE,日期型 5大家或许会问,自动添加的ID在哪里?这个只要选择INT类

15、型,在后面的额外中选择 auto_increment 就可以了。 建立了表以后,可以在左边看到你建立的表,点击以后,你可以: 1按右边的结构:查看修改表结构 2按右边的浏览:查看表中的数据 3按右边的SQL:运行SQL语句 4按右边的插入:插入一行记录 5按右边的清空:删除表中所有记录 6按右边的删除:删除表 还有一个很重要的功能就是导入和导出,当我们本机做好了程序和数据库的时候,需要在效劳器上也有一个本地镜像,如果是ASP的ACCESS简单了,直接上传MDB文件即可,如果是SQL SERVER也可以连接远端效劳器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端效劳器的PHPM

16、YADMIN上,创立数据库后按SQL,粘帖你刚刚复制下来的所有本级生成的SQL语句即可。 今天就说到这里,明天继续说数据库操作。也就是十天学会PHP之数据库操作。今天的知识比拟简单就是MySQL数据新加表。努力明天就是数据库操作知识 本篇文章来源于 PHP资讯 原文链接:十天学会PHP之连接数据库这篇是十天学会PHP的第四天,说的是关于PHP连接数据库的内容,也就是如何使用php去连接mysql数据库。这一天的内容是在昨天十天学会PHP之构建数据库之后的教程,如果你没有看上一篇可以先看看再来看。我这里就简单说一下连接MYSQL数据库。1、mysql_connect翻开 MySQL 效劳器连接。

17、 语法: int mysql_connect(string hostname :port, string username, string password); 返回值: 整数 本函数建立与 MySQL 效劳器的连接。其中所有的参数都可省略。当使用本函数却不加任何参数时,参数 hostname 的默认值为 localhost、参数 username 的默认值为 PHP 执行行程的拥有者、参数 password 那么为空字符串 (即没有密码)。而参数 hostname 后面可以加冒号与端口号,代表使用哪个端口与 MySQL 连接。当然在使用数据库时,早点使用 mysql_close() 将连接关

18、掉可以节省资源。 2、 mysql_select_db 选择一个数据库。 语法: int mysql_select_db(string database_name, int link_identifier); 返回值: 整数本函数选择 MySQL 效劳器中的数据库以供之后的资料查询作业 (query) 处理。成功返回 true,失败那么返回 false。 最简单的例子就是:$conn=mysql_connect ("", "", "");mysql_select_db("shop");连接机MY

19、SQL数据库,翻开SHOP数据库。在实际应用中应当加强点错误判断。今天就说到这里,明天说一下数据库的读取。也就是十天学会PHP之读取数据库。今天是在昨天?十天学会PHP之构建数据库?根底之上的,学习一下吧。 本篇文章来源于 PHP资讯 原文链接:echo和print 的区别echo可以同时输出多个字符串,并不需要圆括号;echo更象一条语句;推荐用echo; print只可以同时输出一个字符串,需要圆括号。print 是函数;print的用法和C语言很像,所以会对输出内容里的%做特殊解释; echo的说明:echo可以同时输出多个字符串,并不需要圆括号;echo更象一条语句;推荐用echo;&

20、lt;?php echo '等等,我还没有写完哪。此处接上面的。'?>echo() 无返回值,与echo 命令相同 ;echo可以多个参数,echo无返回值。print的说明:print只可以同时输出一个字符串,需要圆括号。 print 是函数 ; print的用法和C语言很像,所以会对输出内容里的%做特殊解释; 没多大区别,就是一个函数,一个是命令。 print 还可以这样用 <?print <<<dND<html xmlns=" :/ /1999/xhtml"><head><meta

21、 -equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><body></body></html>dND?> 这样可以输出大段的HTML 而且不用把里面的引号转义 就是不用 " 这样 自动替换里面的变量 print一个参数, print有,ture,1;false,0。区别细节:echo 命令和 print 命令 相同,没有区别 ;echo 函数

22、 和 print 函数 有区别;print() 有返回值,当其执行失败比方断线时返回flase ; printf() 和 sprintf() 类似,均为格式化输出,不同的是前者输出到标准输出,后者输出到变量 。在同一页面中使用<<<标记,标记名为配对出现,同一页面中不允许同名出现两个以上标记名。配对标记名的结尾标记名应单独一行,前后均不允许输出字符.(例如空格等不可见但存在的字符.) 。形如echo <<< EOT EOT; print <<< EOT EOT; 的书写格式,其含义如下: <<< 运算符,将由自定义分界符间

23、的内容视为字符串,可对其间的变量做处理 EOT 自定义分界符,结束时必须位于行首 本篇文章来源于 PHP资讯 原文链接:PHP生成随机字符串PHP生成随机字符串的函数,下面是我在网上找到的2个关于PHP随机字符串的函数,希望大家喜欢。PHP生成随机字符串的函数,下面是我在网上找到的2个关于PHP随机字符串的函数,希望大家喜欢。< ?phpfunction genRandomString($len) $chars = array( "a", "b", "c", "d", "e", "

24、;f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "

25、;z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "

26、;T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ); $charsLen = count($chars) - 1; shuffle($chars);

27、/ 将数组打乱 $output = "" for ($i=0; $i<$len; $i+) $output .= $charsmt_rand(0, $charsLen); return $output; $str = genRandomString(25); $str .= "<br />" $str .= genRandomString(25); $str .= "<br />" $str .= genRandomString(25); echo $str; ?>另外一个随机生成字符串的函数。&l

28、t;?php/* Generate Password* Length : 8*/$str = "0123456789abcdefghijklmnopqrstuvwxyz" / 输出字符集 $n = 8; / 输出串长度 $len = strlen($str)-1;for($j=0 ; $j<200 ; $j+)for($i=0 ; $i<$n; $i+) $s .= $strrand(0,$len); echo $s . "<br/>"$s = "" ?> 本篇文章来源于 PHP资讯 原文链接:PHP取得

29、文件后缀PHP取得文件后缀,关于获取文件的扩展名有很多种方式,下面提供三种获取文件后缀的方法,大家可以研究下,具体代码就不解释了。直接看代码吧。PHP取得文件后缀,关于获取文件的扩展名有很多种方式,下面提供三种获取文件后缀的方法,大家可以研究下,具体代码就不解释了。直接看代码吧。<?php /方法一: function extend_1($file_name) $retval="" $pt=strrpos($file_name, "."); if ($pt) $retval=substr($file_name, $pt+1, strlen($fil

30、e_name) - $pt); return ($retval); /方法二 function extend_2($file_name) $extend = pathinfo($file_name); $extend = strtolower($extend"extension"); return $extend; /方法三 function extend_3($file_name) $extend =explode("." , $file_name); $va=count($extend)-1; return $extend$va; ?>选好一种

31、记住,以后需要使用的时候就可以直接使用,或者来本站查看本文也是可以滴。 本篇文章来源于 PHP资讯 原文链接:正那么表达式经验谈本文的建议主要着眼于正那么表达式的可读性,在开发中养成这些习惯,你将会更加清晰的考虑设计和表达式的结构,这将有助于减少bug和代码的维护,如果你自己就是这个代码的维护者你将倍感轻松。这篇?正那么表达式经验谈?说的很不错,大家可以自己看看,在自己实际使用的过程中注意正那么表达式的这些经验。正那么表达式难于书写、难于阅读、难于维护,经常错误匹配意料不到的文本或者错过了有效的文本,这些问题都是由正那么表达式的表现和能力引起的。每个元字符metacharacter的能力和细微

32、差异组合在一起,使得代码不借助于智力技巧就无法解释。 许多包含一定特性的工具使阅读和编写正那么表达式变得容易了,但是它们又很不符合习惯。对于很多程序员来说,书写正那么表达式就是一种魔法艺术。他们坚持自己所知道的特征并持有绝对乐观的态度。如果你愿意采用本文所探讨的五个习惯,你将可以让你设计的正那么表达式经受的住反复试验。 本文将使用Perl、PHP和Python语言作为代码例如,但是本文的建议几乎适用于任何替换表达式regex的执行。一、使用空格和注释 对于大局部程序员来说,在一个正那么表达式环境里使用空格和缩进排列都不成问题,如果他们没有这么做一定会被同行甚至外行人士看笑话。几乎每个人都知道把

33、代码挤在一行会难于阅读、书写和维护。对于正那么表达式又有什么不同呢? 大局部替换表达式工具都具有扩展的空格特性,这允许程序员把他们的正那么表达式扩展为多行,并在每一行结尾加上注释。为什么只有少局部程序员利用这个特性呢?Perl 6的正那么表达式默认就是扩展空格的模式。不要再让语言替你默认扩展空格了,自己主动利用吧。 记住扩展空格的窍门之一就是让正那么表达式引擎忽略扩展空格。这样如果你需要匹配空格,你就不得不明确说明。 在Perl语言里面,在正那么表达式的结尾加上x,这样“m/foobar/变为如下形式: m/ foo bar /x 在PHP语言里面,在正那么表达式的结尾加上x,这样“"

34、;/foobar/"变为如下形式: "/ foo bar /x" 在Python语言里面,传递模式修饰参数“得到编译函数如下: pattern = r''' foo bar ''' regex = re pile(pattern, re.VERBOSE) 处理更加复杂的正那么表达式时,空格和注释就更能表达出其重要性。假设下面的正那么表达式用于匹配美国的 号码: (?d3)? ?d3-.d4 这个正那么表达式匹配 号码如“(314)555-4000的形式,你认为这个正那么表达式是否匹配“314-555-4000或者“5

35、55- 4000呢?答案是两种都不匹配。写上这么一行代码隐蔽了缺点和设计结果本身, 区号是需要的,但是正那么表达式在区号和前缀之间缺少一个分隔符号的说明。 把这一行代码分成几行并加上注释将把缺点暴露无疑,修改起来显然更容易一些。 在Perl语言里面应该是如下形式: / (? # 可选圆括号 d3 # 必须的 区号 )? # 可选圆括号 -s.? # 分隔符号可以是破折号、空格或者句点 d3 # 三位数前缀 -. # 另一个分隔符号 d4 # 四位数 号码 /x 改写过的正那么表达式现在在 区号后有一个可选择的分隔符号,这样它应该是匹配“314-555-4000的,然而 区号还是必须的。另一个程

36、序员如果需要把 区号变为可选项那么可以迅速看出它现在不是可选的,一个小小的改动就可以解决这个问题。二、书写测试 一共有三个层次的测试,每一层为你的代码加上一层可靠性。首先,你需要认真想想你需要匹配什么代码以及你是否能够处理错误匹配。其次,你需要利用数据实例来测试正那么表达式。最后,你需要正式通过一个测试小组的测试。 决定匹配什么其实就是在匹配错误结果和错过正确结果之间寻求一个平衡点。如果你的正那么表达式过于严格,它将会错过一些正确匹配;如果它过于宽松,它将会产生一个错误匹配。一旦某个正那么表达式发放到实际代码当中,你可能不会两者都注意到。考虑一下上面 号码的例子,它将会匹配“800-555-4

37、000 = -5355。错误的匹配其实很难发现,所以提前规划做好测试是很重要的。 还是使用 号码的例子,如果你在Web表单里面确认一个 号码,你可能只要满足于任何格式的十位数字。但是,如果你想从大量文本里面别离 号码,你可能需要很认证的排除不符合要求的错误匹配。 在考虑你想匹配的数据的时候,写下一些案例情况。针对案例情况写下一些代码来测试你的正那么表达式。任何复杂的正那么表达式都最好写个小程序测试一下,可以采用下面的具体形式。 在Perl语言里面: #!/usr/bin/perl my tests = ( "314-555-4000", "800-555-4400

38、", "(314)555-4000", "314.555.4000", "555-4000", "aasdklfjklas", "1234-123-12345" ); foreach my $test (tests) if ( $test = m/ (? # 可选圆括号 d3 # 必须的 区号 )? # 可选圆括号 -s.? # 分隔符号可以是破折号、空格或者句点 d3 # 三位数前缀 -s. # 另一个分隔符号 d4 # 四位数 号码 /x ) print "Matched

39、 on $testn" else print "Failed match on $testn" 在PHP语言里面: ?php $tests = array( "314-555-4000", "800-555-4400", "(314)555-4000", "314.555.4000", "555-4000", "aasdklfjklas", "1234-123-12345" ); $regex = "/ (? # 可

40、选圆括号 d3 # 必须的 区号 )? # 可选圆括号 -s.? # 分隔符号可以是破折号、空格或者句点 d3 # 三位数前缀 -s. # 另一个分隔符号 d4 # 四位数 号码 /x" foreach ($tests as $test) if (preg_match($regex, $test) echo "Matched on $test;" else echo "Failed match on $test;" ?; 在Python语言里面: import re tests = "314-555-4000", "

41、;800-555-4400", "(314)555-4000", "314.555.4000", "555-4000", "aasdklfjklas", "1234-123-12345" pattern = r''' (? # 可选圆括号 d3 # 必须的 区号 )? # 可选圆括号 -s.? # 分隔符号可以是破折号、空格或者句点 d3 # 三位数前缀 -s. # 另一个分隔符号 d4 # 四位数 号码 ''' regex = re p

42、ile( pattern, re.VERBOSE ) for test in tests: if regex.match(test): print "Matched on", test, "n" else: print "Failed match on", test, "n" 运行测试代码将会发现另一个问题:它匹配“1234-123-12345。 理论上,你需要整合整个程序所有的测试到一个测试小组里面。即使你现在还没有测试小组,你的正那么表达式测试也会是一个小组的良好根底,现在正是开始创立的好时机。即使现在还不是创

43、立的适宜时间,你也应该在每次修改以后运行测试一下正那么表达式。这里花费一小段时间将会减少你很多麻烦事。三、为交替操作分组 交替操作符号的优先级很低,这意味着它经常交替超过程序员所设计的那样。比方,从文本里面抽取Email地址的正那么表达式可能如下: CC:To:(.*) 上面的尝试是不正确的,但是这个bug往往不被注意。上面代码的意图是找到“CC:或者“To:开始的文本,然后在这一行的后面局部提取Email地址。 不幸的是,如果某一行中间出现“To:,那么这个正那么表达式将捕获不到任何以“CC:开始的一行,而是抽取几个随机的文本。坦白的说,正那么表达式匹配 “CC:开始的一行,但是什么都捕获不

44、到;或者匹配任何包含“To:的一行,但是把这行的剩余文本都捕获了。通常情况下,这个正那么表达式会捕获大量 Email地址,所有没有人会注意这个bug。 如果要符合实际意图,那么你应该参加括号说明清楚,正那么表达式如下: (CC:)(To:(.*) 如果真正意图是捕获以“CC:或者“To:开始的文本行的剩余局部,那么正确的正那么表达式如下: (CC:To:)(.*) 这是一个普遍的不完全匹配的bug,如果你养成为交替操作分组的习惯,你就会防止这个错误。 四、使用宽松数量词 很多程序员防止使用宽松数量词比方“*?、“+?和“?,即使它们会使这个表达式易于书写和理解。 宽松数量词可以尽可能少的匹配文

45、本,这样有助于完全匹配的成功。如果你写了“foo(.*?)bar,那么数量词将在第一次遇到“bar时就停止匹配,而不是在最后一次。如果你希望从“foo#bar+bar中捕获“#,这一点就很重要。一个严格数量词将捕获“#bar+ +。;,这将会带来很大麻烦。如果你使用了宽松数量词,你只要花上很少的时间组装字符种类就能产生新的正那么表达式。 在你知道你要捕获文本的环境结构时,宽松数量词是具有很大价值的。 五、利用可用分界符 Perl 和PHP语言常常使用左斜线/来标志一个正那么表达式的开头和结尾,Python语言使用一组引号来标志开头和结尾。如果在Perl和PHP中坚持使用左斜线,你将要防止表达式

46、中的任何斜线;如果在Python中使用引号,你将要防止使用反斜线。选择不同的分界符或引号可以允许你防止一半的正那么表达式。这将使得表达式易于阅读,减少由于忘记防止符号而潜在的bug。 Perl和PHP语言允许使用任何非数字和空格字符作为分界符。如果你切换到一个新的分界符,在匹配URL或HTML标志如“ :/或“br/;时,你就可以防止漏掉左斜线了。 例如,“/ :/(S)*/可以写为“# :/(S)*#。 通用分界符是“#、“!和“。如果你要使用方括号、尖括号或者花括号,只要保持前后配对出现就可以了。下面就是一些通用分界符的例如: # ! s (Perl only) s (Perl only)

47、 s;/ (Perl only) 在Python中,正那么表达式首先会被当作一个字符串。如果你使用引号作为分界符,你将漏掉所有反斜线。但是你可以使用“r''字符串防止这个问题。如果针对“选项使用三个连续单引号,它将允许你包含换行。例如 regex = "(url=file:/w+)(/dfile:/w+)(/d/url+)"可以写出下面的形式: regex = r''' (w+) (d+) ''' 小结本文的建议主要着眼于正那么表达式的可读性,在开发中养成这些习惯,你将会更加清晰的考虑设计和表达式的结构,这将有

48、助于减少bug和代码的维护,如果你自己就是这个代码的维护者你将倍感轻松。 终于发完了,希望大家喜欢。 本篇文章来源于 PHP资讯 原文链接:PHP的Cookie技术介绍本文概要的讲解了Cookie的起源和根本属性,为学些PHP设置Cookie提供技术背景,推荐PHP新手一看。在学习PHP如何设置Cookie之前我们先来了解下Cookie技术。1Cookie技术简介 在WEB技术开展史上,Cookie技术的出现是一个重大的变革。最先是Netscape在它的Netscape Navigator浏览器中引入了Cookie技术,从那时起,World Wide Web 协会就开始支持Cookie标准。以

49、后又经过微软的大力推广因为微软的IIS Web效劳器所采用的ASP技术很大程度的使用了Cookie技术,即在微软的Internet Explorer浏览器中完全支持Cookie技术。到现在,绝大多数的浏览器都支持Cookie技术,或者至少兼容Cookie技术的使用。 1什么是Cookie? 按照Netscape官方文档中的定义,Cookie是在 协议下,效劳器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由Web效劳器保存在用户浏览器上的小文本文件,它可以包含有关用户的信息如身份识别号码、密码、用户在Web站点购物的方式或用户访问该站点的次数。无论何时用户链接到效劳器,Web站点都

50、可以访问Cookie信息。 通俗地讲,浏览器用一个或多个限定的文件来支持Cookie。这些文件在使用Windows操作系统的机器上叫做Cookie 文件,在Macintosh机器上叫做magic Cookie 文件,这些文件被网站用来在上面存储Cookie数据。网站可以在这些Cookie 文件中插入信息,这样对有些网络用户就有些副作用。有些用户认为这造成了对个人隐私的侵犯,更糟的是,有些人认为Cookie是对个人空间的侵占,而且会对用户的计算机带来平安性的危害。目前有些Cookie 是临时的,另一些那么是持续的。临时的Cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间该Cookie

51、就会被系统去除。例如在PHP中Cookie被用来跟踪用户进程直到用户离开网站。持续的Cookie那么保存在用户的Cookie文件中,下一次用户返回时,仍然可以对它进行调用。 在Cookie文件中保存Cookie,一些用户会过分地认为这将带来很大的问题。主要是有些用户担忧Cookie会跟踪用户网上冲浪的习惯,譬如用户喜爱到那些类型的站点、爱从事些什么活动等。害怕这种个人信息一旦落入一些别有用心的家伙手中,那么个人也就可能成为一大堆广告垃圾的对象,甚至遭到意外的损害。不过,这种担忧压根儿不会发生,因为网站以外的用户是无法跨过网站来获得Cookie信息的。所以想以这种目的来应用Cookie是不可能的

52、。不过,由于一些用户错误的理解以及“以讹传讹,一些浏览器开发商别无选择,只好作出相识的响应例如和都提供了屏蔽Cookie 的选项。 对Cookie技术期待了这么久的结果是,迫使许多浏览器开发商在它们的浏览器中提供了对Cookie的灵活性控制功能。例如,目前的两大主流浏览器Netscape Navigator 和 Internet Explorer是这样处理Cookie的不但可以接受Cookie进行警告,而且还可以屏蔽掉Cookie;也可以屏蔽Cookie,但在中就只能进行接受警告而没有提供屏蔽选项,不过在Internet之后的更新版本中又参加了屏蔽Cookie的功能选项。 此外,很多最新的技术

53、甚至已经可以在不能屏蔽Cookie的浏览器上进行Cookie的屏蔽了。例如,可以通过将Cookie文件设置成不同的类型来限制Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的话,肯定会因此拒绝许多的站点页面。因为当今已经有许多Web站点开发人员爱上了Cookie技术的强大功能,例如Session对象的使用就离不开Cookie的支持。 尽管今天仍有一些网络用户对于Cookie的争论乐此不倦,但是对于绝大多数的网络用户来说还是倾向于接受Cookie的。因此,我们尽可以放心地使用Cookie技术来开发我们的WEB页面。 2Cookie是怎样工作的? 要了解Cookie,必不可少地

54、要知道它的工作原理。一般来说,Cookie通过 Headers从效劳器端返回到浏览器上。首先,效劳器端在响应中利用Set-Cookie header来创立一个Cookie ,然后,浏览器在它的请求中通过Cookie header包含这个已经创立的Cookie,并且反它返回至效劳器,从而完成浏览器的论证。 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,效劳器端的Header 如下面所示,这里假设访问者的注册名是“Michael Jordan,同时还对所创立的Cookie的属性如path、domain、expires等进行了指定。 Set-Cookie:

55、login=Michael Jordan;path=/;domain=msn ; expires=Monday,01-Mar-99 00:00:01 GMT 上面这个Header会自动在浏览器端计算机的Cookie文件中添加一条记录。浏览器将变量名为“login的Cookie赋值为“Michael Jordon。注意,在实际传递过程中这个Cookie的值是经过了URLEncode方法的URL编码操作的。 这个含有Cookie值的 Header被保存到浏览器的Cookie文件后,Header就通知浏览器将Cookie通过请求以忽略路径的方式返回到效劳器,完成浏览器的认证操作。 此外,我们使用了C

56、ookie的一些属性来限定该Cookie的使用。例如Domain属性能够在浏览器端对Cookie发送进行限定,具体到上面的例子,该Cookie只能传达室到指定的效劳器上,而决不会跑到其他的如的Web站点上去。Expires属性那么指定了该Cookie保存的时间期限,例如上面的Cookie在浏览器上只保存到1999年3月1日1秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定Cookie将被发送到效劳器的哪一个目录路径下。 说明:浏览器创立了一个Cookie后,对于每一个针对该网站的请求,都会在Header中带着这个Cookie

57、;不过,对于其他网站的请求Cookie是绝对不会跟着发送的。而且浏览器会这样一直发送,直到Cookie过期为止。Cookie技术是一个非常有争议的技术,自经诞生它就成了广阔网络用户和Web开发人员的一个争论焦点。有一些网络用户,甚至包括一些资深的Web专家也对它的产生和推广感到不满,这倒不是因为Cookie技术的功能太弱或别的技术性能上的原因,而仅仅是因为他们觉得Cookie 的使用,对网络用户的隐私构成了危害。因为Cookie是由Web效劳器保存在用户浏览器上的小文本文件,它包含有关用户的信息如身份识别号码、密码、用户在Web站点上购物的方式或用户访问该站点的次数。 那么Cookie 技术究

58、竟怎样呢?是否真的给网络用户带来了个人隐私的危害呢?看了上面的资料您心中应该有个度量了吧。 本篇文章来源于 PHP资讯 原文链接:PHP数组排序PHP数组排序实际上就是将PHP数组进行排序,在本文中也就是对数据库查询出来的结果集进行排序。数据库查询结果有时候不能直接使用,比方mysql等用in语句出来的结果,因此需要对结果进行某种方式的排序。PHP数组排序实际上就是将PHP数组进行排序,在本文中也就是对数据库查询出来的结果集进行排序。数据库查询结果有时候不能直接使用,比方mysql等用in语句出来的结果,因此需要对结果进行某种方式的排序。这时候就需要进行PHP数组排序了。对数据库结果进行排序请看下面的例如:本例中data 数组中的每个单元表示一个表中的一行。这是典型的数据库存放数组数据的方式。例子中的数据如下: volume | edition-+- 67 | 2 86 | 1 85 | 6 98 | 2 86 | 6 67 | 7数据全都存放在名为 data 的数组中。这通常是通过循环从数据库取得的结果,例如 mysql_fetch_assoc()实际上这个函数你可以和mysql_fetch_assoc()函数看成一样,具体的差异你可以看PHP的手册里面关于key的差异

温馨提示

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

评论

0/150

提交评论