社区
JavaScript
帖子详情
求正则表达式一个,验证PHP变量名是否合法
yalan
2017-03-03 02:22:18
求一个正则表达式,验证php变量是否合法:
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
...全文
223
4
打赏
收藏
求正则表达式一个,验证PHP变量名是否合法
求一个正则表达式,验证php变量是否合法: 变量以 $ 符号开头,其后是变量的名称 变量名称必须以字母或下划线开头 变量名称不能以数字开头 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
老鼠拧刀满街找猫
2017-03-03
打赏
举报
回复
引用 3 楼 yalan 的回复:
谢谢热心解答
你自己写的那个已经可以用了,只是可以简写一下
yalan
2017-03-03
打赏
举报
回复
谢谢热心解答
老鼠拧刀满街找猫
2017-03-03
打赏
举报
回复
/^\$[a-z_]\w*$/i
yalan
2017-03-03
打赏
举报
回复
正确答案 /^\$[A-Za-z_]+\w*/ 随便谁来回复一下,我送分啦呵呵!
PHP
基础教程 是
一个
比较有价值的
PHP
新手教程!
标题:
PHP
基础教程 出处:风流的CG网络日志 时间:Mon, 28 Aug 2006 07:24:34 +0000 作者:yufeng 地址:http:///read.
php
?38 内容: 提供给新手学习的
PHP
新手教程,是
一个
比较有价值的
PHP
新手教程! 一、
PHP
简介
PHP
是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用
PHP
建立
一个
真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。 1.简介
PHP
是能让你生成动态网页的工具之一。
PHP
网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写
PHP
。
PHP
代表:超文本预处理器(
PHP
: Hypertext Preprocessor)。
PHP
是完全免费的,不用花钱,你可以从
PHP
官方站点(http://www.
php
.net)自由下载。
PHP
遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。
PHP
在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装
PHP
的资料可以在
PHP
官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么
PHP
也一样没有千年虫问题! 1.1 历史 三年前,Rasmus Lerdorf为了创建他的在线简历而创造了"个人主页工具"(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。
PHP
虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。现在有了可以与mod_perl速度想媲美的被称作Zend的新引擎,而
PHP
4就可以充分利用这个引擎。
PHP
4还处在BETA测试阶段。Andy Gutmans和Zeev Suraki是Zend的主要作者。可以去Zend站点(http://www.zend.com)了解更多。
PHP
的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用
PHP
技术。 1.2
PHP
的先进之处 应用
PHP
有许多好处。当然已知的不利之处在于
PHP
由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到
PHP
4之前)。但是
PHP
的邮件列表很是有用而且除非你正在运行像Yahoo!或者Amazon.com这样的极受欢迎的站点,你不会感觉出
PHP
的速度与其他的有什么不同。最起码我就没有感觉出来!好了,让我们来看看
PHP
有那些优点: - 学习过程 我个人更喜欢
PHP
的非常简单的学习过程。与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出
一个
象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的
PHP
编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。
PHP
的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,
PHP
太简单了。相反的,如果你对
PHP
了解较多,那么你对于其他几种语言的学习都很简单了。 你只需要30分钟就可以将
PHP
的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于
PHP
代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入
PHP
使得你的站点更加具有动态特性。 - 数据库连接
PHP
可以编译成具有与许多数据库相连接的函数。
PHP
与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。
PHP
LIB就是最常用的可以提供一般事务需要的一系列基库。 - 可扩展性 就像前面说的那样,
PHP
已经进入了
一个
高速发展的时期。对于
一个
非程序员来说为
PHP
扩展附加功能可能会比较难,但是对于
一个
PHP
程序员来说并不困难。 - 面向对象编程
PHP
提供了类和对象。基于web的编程工作非常需要面向对象编程能力。
PHP
支持构造器、提取类等。 - 可伸缩性 传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每
一个
正在运行的CGI程序开
一个
独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。
PHP
就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的
PHP
可以具有更高的可伸缩性。 - 更多特点
PHP
的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用
PHP
连接包括Oracle,MS-Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的
PHP
安装版本需要哪些功能。引用Nissan的Xterra的话来说就是
PHP
可以做到你想让它做到的一切而且无所不能! 1.3 竞争对手:ASP,mod_perl,JSP 我当然不清楚ASP/JSP能做些什么。不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,因此Java程序员可以轻松开始编码。ASP只是
一个
一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。 mod_perl与Perl一样强大,只是更快一些。 二、
PHP
入门
PHP
站点的在线教程已经很棒了。在那里还有一些其他教程的链接。而本文的该部分将让你对
PHP
熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的
PHP
编程。 2.1 首要条件 你首先必须要有
一个
正在工作着的支持
PHP
的web服务器。我假定在你的服务器上所有
PHP
文件的扩展名为.
php
3。 2.2
PHP
的安装 生成
一个
名为test.
php
3的文件,含有以下内容: 然后在你的浏览器中打开此文件。看看这个页面你就知道你的
PHP
安装使用的选项了。 2.3 语法 就像前面提到的一样,你可以混合编写你的
PHP
代码和HTML代码。因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法。你可以选用其中一种你最适应的并且就这样坚持这种方法! 从HTML中分离 以下是可以使用的方法: . . . 语句 与Perl和C一样,在
PHP
中用(;)来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。 注释
PHP
支持C,C++和Unix风格的注释方式: /* C,C++风格多行注释 */ // C++风格单行注释 # Unix风格单行注释 Hello,World! 通过我们已经学过的知识,你可以编写
一个
最简单的程序输出
一个
也许是程序世界中最有名的词语: First
PHP
page 2.4 数据类型
PHP
支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由
PHP
运行过程决定(真是好的解脱!)。但是类型也可以被函数cast或者settype()明确的设定。 数值 数值类型可以是整数或是浮点数。你可以用以下的语句来为
一个
数值赋值: $a = 1234; # 十进制数 $a = -123; # 负数 $a = 0123; # 八进制数 (等于十进制数的83) $a = 0x12; # 十六进制数(等于十进制数的18) $a = 1.234; # 浮点数"双精度数" $a = 1.2e3; # 双精度数的指数形式 字符串 字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # 产生 Hello World $full2 = '$first $second';# 产生 $first $second 可以将字符和数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在
PHP
手册中有详细的例子。 数组与哈希表 数组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为数组赋值。数组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。 //
一个
包含两个元素的数组 $a[0] = "first"; $a[1] = "second"; $a[] = "third"; // 添加数组元素的简单方法 // 现在$a[2]被赋值为"third" echo count($a); // 打印出3,因为该是数组有3个元素 // 用
一个
语句定义
一个
数组并赋值 $myphonebook = array ( "sbabu" => "5348", "keith" => "4829", "carole" => "4533" ); // 噢,忘了教长吧,让我们添加
一个
元素 $myphonebook["dean"] = "5397"; // 你定义的carale元素错了,让我们更正它 $myphonebook["carole"] => "4522" // 我还没有告诉你怎样使用数组的相似支持方式吗?让我们看一看 echo "$myphonebook[0]"; // sbabu echo "$myphonebook[1]"; // 5348 其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。 对象 使用new语句产生
一个
对象: class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); 改变变量类型 在
PHP
手册中提到:"
PHP
不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。如果你为变量var赋值为
一个
字符串,那么它变成了
一个
字符串。如果你又为它赋了整数值,那么它就变成了整数。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整数(2) $foo = $foo + 1.3; // $foo是
一个
双精度数(3.3) $foo = 5 + "10 Little Piggies"; // $foo是
一个
整数(15) $foo = 5 + "10 Small Pigs"; // $foo是
一个
整数(15) 如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。 2.5 变量与常量 可能你已经注意到,变量都有
一个
美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请参考
PHP
手册。这在有时会显得很有用。
PHP
内置了许多已定义的变量。你也可以用define函数定义你自己的常量,比如define("CONSTANT","value")。 2.6 运算符
PHP
具有C,C++和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋值同样使用"="。 算术和字符 以下只有一种运算符是有关字符的: $a + $b :加 $a - $b :减 $a * $b :乘 $a / $b :除 $a % $b :取模(余数) $a . $b :字符串连接 逻辑和比较 逻辑运算符有: $a || $b :或 $a or $b :或 $a && $b :与 $a and $b :与 $a xor $b :异或 (当$a或$b为true时为true,两者一样时为false) ! $a :非 比较运算符有: $a == $b :相等 $a != $b :不等 $a < $b :小于 $a $b :大于 $a >= $b :大于等于 与C一样
PHP
也有三重运算符(?:)。位操作符在
PHP
同样存在。 优先权 就和C以及Java一样! 2.7 控制流程结构
PHP
有着与C一样的流程控制。我将在下面大概介绍。 if, else, elseif, if(): endif if (表达式一) { . . . } elseif (表达式二) { . . . } else { . . . } // 或者像Python一样 if (表达式一) : . . . . . . elseif (表达式二) : . . . else : . . . endif ; Loops. while, do..while, for while (表达式) { . . . } do { . . . } while (表达式); for (表达式一; 表达式二; 表达式三) { . . . } //或者像Python一样 while (expr) : . . . endwhile ; switch switch是对多重if-elseif-else结构的最好的替换: switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i equals 2"; } break, continue break中断当前的循环控制结构。 continue被用来跳出剩下的当前循环并继续执行下一次循环。 require, include 就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的
PHP
文件分割成多个文件并且在不同需要时分别引用它们。 2.8 函数 你可以像以下的例子一样定义自己的函数。函数的返回值可以是任何数据类型: function foo (
变量名
一,
变量名
二, . . . ,
变量名
n) { echo "Example function.\n"; return $retval; } 所有
PHP
代码都可以出现在函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义。 2.9 类 利用类模型建立类。可以参考
PHP
手册中对类的详细解释。 class Employee { var $empno; // 员工人数 var $empnm; // 员工姓名 function add_employee($in_num, $in_name) { $this->empno = $in_num; $this->empnm = $in_name; } function show() { echo "$this->empno, $this->empnm"; return; } function changenm($in_name) { $this->empnm = $in_name; } } $sbabu = new Employee; $sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show(); 三、从实例入手
PHP
的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的
PHP
知识,我们可以试着建立
一个
简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于
一个
典型个人网站的建设。 3.1 计划
一个
站点 一般
一个
个人站点包括
一个
欢迎页面、
一个
留言本页面、
一个
书签链接页面、
一个
计数器、联系信息,甚至还有照片集和一些音乐文件等等。让我们从
一个
标题页面、
一个
联系信息页面和
一个
简历页面开始。我们同样需要标准的通用的页面头部和底部。 标题页面--front.html 这里我们有
一个
非常简单的html文件: 我的个人主页--欢迎 我的个人主页 欢迎 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 Copyright ? 我自己,1999 联系信息页面--count.html 同样我们又有了
一个
简单页面: 我的个人主页--联系信息 我的个人主页 联系信息 你可以通过1-800-
PHP
-INFO联系我 Copyright ? 我自己,1999 3.2 HTML到
PHP
从上面你可以看出,每个页面有相同的头部和底部。像上面那样每个页面都写入相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写
PHP
的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在
一个
叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。 全站通用变量设定:common.inc // 全站通用变量 $MyEmail = "
php
talk@tnc.org"; $MyEmailLink = "$MyEmail"; $MyName = "
PHP
Talk"; $MySiteName = $MyName."'s Home Page"; ?> 通用页面头部:header.inc 通用页面底部:footer.inc Copyright ? by , 1999 新的页面front.
php
3: 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 新的cont.
php
3: 你可以通过1-800-
PHP
-INFO联系我 现在你就可以猜出这样安排的好处了。如果你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注意的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。 3.3 计数器 让我们在首页上加上
一个
计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码: 然后我们更改front.
php
3文件以显示这个计数器: include("include/counter.inc"); // 我把计数值放在文件counter.txt中,读出并输出 printf ("%06d \n", get_hitcount("counter.txt")); include("include/footer.inc"); ?> 看看我们的新front.
php
3 3.4 反馈表单 让我们再添加
一个
反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:
一个
为浏览者提供输入表单;
一个
获得表单数据并处理、mail给你。
PHP
中获取表单数据是很简单的。当
一个
表单被发送后,表单中所包含的各个元素被赋上了相应的值,而这样就可以像引用一般变量一样使用了。 在process_form.
php
3中,变量$mytext就被赋予了输入的值--非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量值。你唯一要做的就是为表单中的每
一个
元素取名以便将来可以引用。 根据这个方法,我们可以生成
一个
简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的
PHP
页面(sendfdbk.
php
3)读取数据,检查姓名
是否
为空,最后将数据mail给你。 表单:form.
php
3 Your feedback on my home page. 处理表单:sendfdbk.
php
3 include("include/common.inc"); $title = "Feedback"; include("include/header.inc"); if ( $name == "" ) { // 现在我很讨厌匿名的留言! echo "Duh ? How come you are anonymous?"; } elseif ($name == "Your name") { // 这个浏览者真是不想透露姓名啊! echo "Hello ? Your name is supposed to be replaced with your actual name!"; } else { // 输出一段礼貌的感谢语 echo " Hello, $name. Thank you for your feedback. It is greatly appreciated. Thanking you $MyName $MyEmailLink "; // 最后mail出去 mail($MyEmail, "Feedback."," Name : $name E-mail : $email Comment : $comment "); } include("include/footer.inc"); ?> 3.5 简单的站内搜索引擎
PHP
可以调用外部程序。在Unix环境下我们可以利用程序grep实现
一个
简单的搜索引擎。我们可以做的稍微复杂一些:使用
一个
页面既输出
一个
表单供用户输入搜索字串又输出查询结果。
if ( ! empty($searchstr) ) { // empty()用来检查查询字串
是否
为空 // 如果不为空,调用grep查询 echo "\n"; // 调用grep对所有文件进行大小写非敏感模式的查询 $cmdstr = "grep -i $searchstr *"; $fp = popen( $cmdstr, "r" ); // 执行命令并输出管道 $myresult = array(); // 存储查询结果 while( $buffer = fgetss ($fp, 4096)) { // grep返回这样格式: 文件名:匹配字串出现行数 // 因此我们利用函数split()分离处理数据 list($fname, $fline) = split(":",$buffer, 2); // 我们只输出第一次匹配的结果 if ( !defined($myresult[$fname])) $myresult[$fname] = $fline; } // 现在我们将结果存储在数组中,下面就可以处理并输出了 if ( count($myresult) ) { echo "\n"; while(list($fname,$fline) = each($myresult)) echo " $fname : $fline \n"; echo "\n"; } else { // 如果没有查询结果 echo "Sorry. Search on $searchstr returned no results.\n"; } pclose($fp); } ?> 注释:
PHP
_SELF是
PHP
内建的变量。包含当前文件名。 fgets()按行读取文件,最多4096(指定)字符长度。 fgetss()与fgets()相似,只是解析输出的HTML标记。 split()有
一个
参数是2,因为我们只需要把输出分成两部分。另外需要省略":"。 each()是
一个
数组操作函数,用来更方便的遍历整个数组。 popen()、pclose()与fopen()、fclose()的功能很相似,只是增加了管道处理。 请注意以上的代码并不是实现
一个
搜索引擎的好办法。这只是有助于我们更好学习
PHP
而举出的
一个
例子而已。理想的情况是你应该建立
一个
包含关键字的数据库然后进行搜索 四、与数据库链接 通过
PHP
你可以轻松的连接到数据库,请
求
数据并将其显示在你的web站点中,甚至修改数据库中的数据。MySQL是一种很流行的数据库,并且在互联网中有许多有关
PHP
与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍
PHP
与数据库的连接。我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。
PHP
提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的
PHP
安装选项应该可以支持两者的使用。 想获得更多有关在Microsoft Windows平台上安装支持
PHP
3的Apache服务器的知识以及更多有关Oracle数据库的知识,请查阅以下URL:www.csoft.net/~vsbabu/articles/ora
php
.html。 4.1 连接 if ($conn=Ora_Logon("user@TNSNAME","password")) { echo "SUCCESS ! Connected to database\n"; } else { echo "Failed :-( Could not connect to database\n"; } Ora_Logoff($conn);
php
info(); ?> 以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回
一个
非零的连接ID并储存在变量$conn中。 4.2 查询 假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了
一个
连接并查询的典型例子: /* * 连接数据库并执行查询 */ function printoraerr($in_cur) { // 检查Oracle
是否
出错 // 如果存在错误则显示 // 当指针被激活时每次请
求
Oracle后调用该函数 if(ora_errorcode($in_cur)) echo "Oracle code - ".ora_error($in_cur)."\n"; return; } /** 主程序 */ if (!($conn=ora_logon("user@TNSNAME","password"))) { echo "Connection to database failed\n"; exit; } echo "Connected as connection - $conn\n"; echo "Opening cursor ...\n"; $cursor=ora_open($conn); printoraerr($cursor); echo "Opened cursor - $cursor\n"; $qry="select user,sysdate from dual"; echo "Parsing the query $qry ...\n"; ora_parse($cursor,$qry,0); printoraerr($cursor); echo "Query parsed \n"; echo "Executing cursor ...\n"; ora_exec($cursor); printoraerr($cursor); echo "Executed cursor\n"; echo "Fetching cursor ...\n"; while(ora_fetch($cursor)) { $user=ora_getcolumn($cursor,0); printoraerr($cursor); $sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); echo " row = $user, $sysdate \n"; } echo "Fetched all records\n"; echo "Closing cursor ...\n"; ora_close($cursor); echo "Closed cursor\n"; echo "Logging off from oracle... \n"; ora_logoff($conn); echo "Logged off from oracle \n"; ?> (译者注:以上代码段缺少注释,请读者参考
PHP
Manual的Oracle数据库函数部分) 4.3 显示结果 以下代码演示了怎样查询数据库并将结果输出: function printoraerr($in_cur, $conn) { // 检查Oracle
是否
出错 // 如果存在错误则显示 // 当指针被激活时每次请
求
Oracle后调用该函数 // If it encountered an error, we exit immediately if(ora_errorcode($in_cur)) { echo "Oracle code - ".ora_error($in_cur)."n"; ora_logoff($conn); exit; } return; } function exequery($w_qry,$conn) { $cursor=ora_open($conn); printoraerr($cursor,$conn); ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn); ora_exec($cursor); printoraerr($cursor,$conn); $numrows=0; $w_numcols=ora_numcols($cursor); // 显示头部 echo " \n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; echo "\t".ora_columnname($cursor,$i)."\n"; } echo "\n"; while(ora_fetch($cursor)) { echo "\n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; if(ora_columntype($cursor,$i)=="LONG") echo "". ora_getcolumn($cursor,$i)."\n"; else echo "".ora_getcolumn($cursor,$i)."\n"; printoraerr($cursor,$conn); } $numrows++; echo "\n"; } if ($numrows==0) echo "Query returned no records \n"; else { echo "\n"; echo "Count\n"; echo "$numrows\n"; echo "\n"; } echo "\n"; ora_close($cursor); return; } // 主程序 if(!($conn=ora_logon("user@SID","password"))) { echo "Error: Cannot connect to database\n"; exit; } $qry="SELECT deptno \"Dept\" ,empno \"Emp\" ,empnm \"Name\" ,salary \"Salary\" FROM employee ORDER BY 1,2"; exequery($qry); ora_logoff($conn); ?> (译者注:以上代码段缺少注释,请读者参考
PHP
Manual的Oracle数据库函数部分) 4.4 基于HTTP的Oracle登录 将以下代码加在
PHP
页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。 if(!isset($
PHP
_AUTH_USER)) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorized to enter the site \n"; exit; } else { if (!($conn=ora_logon("$
PHP
_AUTH_USER@$SID",$
PHP
_AUTH_PW))) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorised to enter the site \n"; exit; } } ?> 五、其它功能 5.1 生成图像
PHP
可以操作处理图像。如果你已经安装了GD库,你甚至可以利用
PHP
生成图像。 (译者注:以上代码段缺少注释,请读者参考
PHP
Manual的图像处理函数部分) 这段代码在其他页面中通过以下标记调用,然后以上的那段button.
php
3代码取得text值并在另外取得的图像文件中加上该值--在以上的代码中该图像文件是images/button1.gif--最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。 5.2 Cookies
PHP
支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道
是否
一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输出HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是
一个
简单例子: if (empty($VisitedBefore)) { // 如果没有设定cookie,为cookie赋上当前时间值 // 函数中的最后
一个
参数声明了该cookie保存的时间 // 在这个例子中是1年 // time()函数返回自1970年1月1日以来的以秒数计的时间 SetCookie("VisitedBefore",time(), time()+(60*60*24*365)); } else { // 欢迎浏览者再次光临 echo "Hello there, welcome back"; // 读取cookie并判断 if ( (time() - $VisitedBefore) >= "(60*60*24*7)" ) echo "Why did you take a week to come back. You should be here more often!? "; } ?> 5.3 基于HTTP
验证
基于HTTP
验证
当
PHP
以CGI模式运行时不能实现。我们可以使用函数header()发送HTTP标头强制
验证
,客户端浏览器则弹出供输入用户名和密码的对话框。这两个变量被储存在$
PHP
_AUTH_USER和$
PHP
_AUTH_PW中,你可以使用这两个变量
验证
合法
并允许进入。以下的例子通过用户名称/密码对为tnc/nature的
验证
一名用户的登录: 事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。 5.4 文件上传 你可以利用
PHP
实现文件的功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上。以下就是该功能的简单演示: ( upload.html ): Upload Your File (You may notice a slight delay while we upload your file.) 下面是处理上传的文件: ( receiver.
php
3 ): 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } $the_time = time (); // 你需要对以下目录有写权限 $upload_dir = "/local/uploads"; $local_file = "$upload_dir/$the_time"; if ( file_exists ( '$local_file' ) ) { $seq = 1; while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; } $local_file = "$upload_dir/$the_time$seq"; }; rename ( $uploadfile, $local_file ); display_page (); } function display_page () { // 这里是你的页面内容 }
php
3 Receiving Script if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } elseif ( $cancelit ) { header ( "Location: $some_other_script" ); exit; } else { some_other_func (); } ?> 5.5 常用函数 我们简单来看看一些常用的函数。 数组 array - 生成数组 count - 数组元素个数 sort - 数组排序,另有其他几种排序函数可供使用 list - 列出数组元素 each - 返回下
一个
key/value对 current - 返回当前数组元素 next,prev - 传回当前数组元素前后指针 日期和时间 checkdate -
验证
日期/时间格式 date - 生成日期/时间格式 time - 当前时间信息 strftime - 格式化日期/时间 目录、文件系统 chdir - 改变目录 dir - 目录类别 opendir, readdir, closedir - 开启、读取、关闭目录 fopen, fclose - 开启、关闭文件 fgets, fgetss - 逐行读取内容 file - 将整个文件读入
一个
数组变量中
正则表达式
ereg - 匹配
正则表达式
eregi - 大小写非敏感匹配
正则表达式
ereg_replace -匹配
正则表达式
并替换 eregi_replace -大小写非敏感匹配
正则表达式
并替换 split - 依规则切开字符串并以数组形势存储 字符串 AddSlashes - 加上斜杠后使用字符串 echo - 输出
一个
或多个字符串 join, implode - 将数组元素合并为字符串 htmlentities, htmlspecialchars - 将HTML特殊字符转换为HTML标记形式 split - 依规则切开字符串并以数组形势存储 5.6 扩展我们的范例主页 我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加
一个
用户
验证
表单以便上传音乐、图像等文件并自动更新页面。 导航栏 实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.
php
3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码: /* 输出该导航栏,链接所有除当前页的站内.
php
3文件 */ # 读取目录 $d = dir("./"); echo " | \n"; while($entry = $d->read()) { // 忽略无文件情况 if ( !is_file($entry) ) continue; /* 将文件名与扩展名分开。由于.是
正则表达式
特殊字符,应该用\引出 */ list($filenm, $fileext) = split("\.",$entry, 2); // 忽略非.
php
3文件情况 if( $fileext != "
php
3" ) continue; /* 现在我们已经把.
php
3文件都选出,下面搜寻文件中的第一行(标题) 类似$title="something"; 并将以上标题内容分开,用作链接文字 */ $linknm = ""; $fp=fopen($entry,"r"); while($buffer=fgets($fp, 4096)) { $buffer = trim($buffer); // 我们已经把每个文件的标题放在文件的第一行以便搜索 // 但是当你改变
变量名
称时可能会带来大麻烦 if (ereg("title *= *\"", $buffer)) { /* 我们已经取得了标题内容并可以在此基础上 进行去除空格等处理。 必须以
PHP
代码方式处理,比如$title = "blah blah" */ eval($buffer); // 然后将链接文字显示为标题文字 $linknm = $title; break; } } fclose($fp); if ( $entry == basename($
PHP
_SELF) ) echo "$linknm"; else echo "$linknm"; echo " | "; } $d->close(); echo " \n"; ?> 照片收藏夹 我们将引用基于HTTP的
验证
、文件系统函数和文件上传功能维护放置图像文件的目录。 同时我们需要建立
一个
可以列出在该目录下所有照片的页面。 文件上传 include("include/common.inc"); // 我们在这里再做一次用户
验证
if(!isset($
PHP
_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"$MySiteName\""); Header("HTTP/1.0 401 Unauthorized"); echo "Sorry, you are not authorized to upload files\n"; exit; } else { if ( !($
PHP
_AUTH_USER==$MyName && $
PHP
_AUTH_PW==$MyPassword ) ) { // 如果是错误的用户名称/密码对,强制再次认证 Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "ERROR : $
PHP
_AUTH_USER/$
PHP
_AUTH_PW is invalid."; exit; } } if ( $cancelit ) { // 当浏览者按下"取消"按钮则转向首页面 header ( "Location: front_2.
php
3" ); exit; } function do_upload () { global $userfile, $userfile_size, $userfile_name, $userfile_type; global $local_file, $error_msg; global $HTTP_REFERER; if ( $userfile == "none" ) { $error_msg = "You did not specify a file for uploading."; return; } if ( $userfile_size > 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } // Wherever you have write permission below... $upload_dir = "photos"; $local_file = "$upload_dir/$userfile_name"; if ( file_exists ( $local_file ) ) { $error_msg = "Sorry, a file with that name already exists"; return; }; // 你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3… rename($userfile, $local_file); echo "The file is uploaded\n"; echo "Go Back\n"; } $title = "Upload File"; include("include/header.inc"); if (empty($userfile) || $userfile=="none") { // 输出以下表单 ?>
(You may notice a slight delay while we upload your file.) } else { if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } } include("include/footer.inc"); ?> 照片图库 Here are some of our family photos. This
PHP
script can really be made better, by splitting into multiple pages. read()) { if (is_file("photos/$entry")) echo "\n"; } $d->close(); ?> 另外,你可以在文件上传的表单中加上
一个
输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。 六、网络资源 你可以通过web上的众多资源更多的了解
PHP
3。许多邮件列表和书籍对你都非常有用。 6.1 站点
PHP
的爆炸性流行使得一夜之间出现了很多基于
PHP
的站点,其中不少站点有在线教程、范例代码、技巧和提示等内容。 国内 http://www.
php
user.com -
PHP
中文用户,也就是这里了 http://www.
php
x.com - 中国
PHP
联盟 http://www.
php
site.net -
PHP
专门站 http://www.
php
china.com -
PHP
CHINA http://www.cpcw.com/netschool/homepage/cgi/ - 电脑报网页陶吧 国外 http://www.
php
.net/ -
PHP
官方站点 http://www.devshed.com/ - 极好的教程 http://px.sklar.com - 代码交换 http://www.
php
builder.com/ - 教程、专栏和邮件列表档案 http://www.weberdev.com/ - 文章和代码 http://www.
php
wizard.net/ - 提示与技巧 http://www.iometrics.com/
php
/
php
list.
php
3/ - IOMetrics scripts的档案 http://www.e-gineer.com/
php
kb/ -
PHP
知识库 6.2 邮件列表 你可以在
PHP
官方站点的"支持"栏目内登记获得以下的邮件列表。值得注意的是这些都是高流量流表,一般每天会有100份e-mail。
php
3@lists.
php
.net - 主要的列表
php
-dev@lists.
php
.net - 主要针对开发者
php
-list@exp.com.cn - 本站的邮件列表,与论坛相通 6.3 引人注目的工程 一些基于
PHP
的工程已经发展得比较完善。其中一些更出色更引人注目的是: http://
php
lib.netuse.de -
PHP
Lib,一整套
PHP
函数库 http://www.phorum.org - Phorum是
一个
很完善的BBS系统 http://www.fishcartsql.org - FishCartSQL是
一个
电子商务解决方案 http://www.midgard-project.org - Midgard是
一个
网络应用开发平台 Generated by Bo-blog 2.0.2 sp2
PHP
程序开发范例宝典III
让你短时间内由一名菜鸟到高手绝对没问题! 由于权限有限,分3部份下载
PHP
程序开发范例宝典 内容提要 《
PHP
程序开发范例宝典》全面介绍了应用
PHP
进行网站开发的各种技术和技巧。《
PHP
程序开发范例宝典》分为20章,内容包括
PHP
的运行环 境配置、表单及表单元素的应用、CSS与JavaScript脚本的应用、
验证
控件、构建
PHP
动态网页、
PHP
与MySQL的数据库技术、
PHP
与其他数据库技 术、SQL查询相关技术、MySQL高级应用技术、字符串的处理技术、
PHP
面向对象编程技术、文件管理、图像和多媒体技术、信息提取与图表分析 技术、报表与打印技术、网络通信技术、
PHP
与XML技术、安全技术、
PHP
高级应用技术以及综合应用等。《
PHP
程序开发范例宝典》共提供了453 个实例,每个实例都突出实用性,绝大部分实例都体现了
PHP
编程人员在实际项目开发过程中总结出的经验技巧。 《
PHP
程序开发范例宝典》内容充实,实例丰富,特别适于
PHP
编程人员和广大计算机爱好者学习开发使用,也可供大、中专院校师生阅读 参考。 《
PHP
程序开发范例宝典》附有配套光盘。光盘提供了书中所有实例的源代码。代码都经过精心调试,在Windows XP/Windows 2000/Windows 2003 Server/Linux/UNIX下测试通过。
PHP
程序开发范例宝典 目录 第1章
PHP
的运行环境配置 1 1.1 Windows下环境配置 2 实例001 Windows下Apache的安装配置 2 实例002 Windows下MySQL的安装配置 5 实例003 Windows下
PHP
的安装配置 6 实例004 Window下
php
MyAdmin的安装配置 7 实例005 使用AppServ架设Apache+MySQL+
PHP
运行环境 8 实例006 使用IIS服务器运行
PHP
脚本 10 实例007 Windows下发布“明日科技”网站 12 1.2 Linux下环境配置 14 实例008 Linux下Apache1.x安装配置 14 实例009 Linux下安装与配置Apache 2.x 15 实例010 Linux下
PHP
的安装配置 16 实例011 Linux下MySQL的安装配置 18 实例012 启用Red Hat Linux 9自带的
PHP
运行环境 19 实例013 Linux下实现
PHP
支持Socket 20 实例014 Linux下实现
PHP
支持mysqli扩展技术 21 实例015 开机自动启动Apache服务 21 实例016 开机自动启动MySQL服务 22 实例017 Linux下发布“读者之家”网站 22 1.3 应用常用开发工具开发
PHP
程序 23 实例018 应用Dreamweaver开发
PHP
程序 24 实例019 应用Eclipse开发
PHP
程序 25 实例020 应用
PHP
Editor开发
PHP
程序 27 实例021 应用UltraEdit开发
PHP
程序 29 实例022 应用Namo WebEditor开发
PHP
程序 30 第2章 表单及表单元素的应用 33 2.1 获取表单元素提交的值 34 实例023 获取文本框的值 34 实例024 获取隐藏域的值 35 实例025 获取文本域的值 36 实例026 获取复选框的值 37 实例027 获取单选按钮组的值 38 实例028 获取下拉列表的值 40 实例029 获取跳转菜单的值 41 实例030 获取文件域的值 42 2.2 动态添加表单元素 42 实例031 不提交表单获取单选按钮的值 43 实例032 选中单选按钮后显示其他表单元素 44 实例033 根据数据表结构自动生成数据录入页面 45 实例034 投票系统中单选按钮与复选框的应用 47 2.3 下拉列表的应用 50 实例035 在下拉菜单中显示数据表某列的字段值 50 实例036 在下拉菜单中显示数组中的元素 51 实例037 级联菜单的应用 52 实例038 修改数据时下拉列表的默认值为数据库中原数据信息 54 实例039 可输入字符的下拉菜单 56 实例040 应用下拉列表选择所要联机的网站 57 实例041 根据下拉列表的值显示不同控件 58 2.4 文本框组件的应用 60 实例042 自动计算金额 60 实例043 设置文本框的只读属性 61 实例044 设置安全的密码域 63 实例045 限制多行文本域输入的字符个数 64 2.5 表单的综合应用 65 实例046 表单组件的综合应用 65 实例047 同
一个
页面中的多表单提交 66 实例048 获取表单中提交的所有数据 68 实例049 以文件域的形式显示数据信息 70 第3章 CSS与JavaScript脚本的应用 73 3.1 文字特效 74 实例050 逐个闪烁的文字 74 实例051 荧光灯文字 75 实例052 滚动的文字 77 3.2 控件样式 80 实例053 通过鼠标的移动改变文本框的背景色 80 实例054 改变下拉列表框的背景色 82 实例055 带颜色变化的动态链接按钮 82 实例056 设置图片的样式 83 实例057 设置表格的样式 84 实例058 模拟的进度条 86 3.3 超链接样式 87 实例059 鼠标单击文字超链接样式 87 实例060 鼠标滑过图片超链接样式 88 实例061 鼠标单击文字获得帮助效果 89 3.4 页面样式 90 实例062 动态标题栏 90 实例063 滚动条样式 91 实例064 页面整体风格 92 实例065 首尾页切换特效 94 3.5 导航菜单设计 96 实例066 带图标的文字导航条 96 实例067 flash导航条 97 实例068 按钮导航条 99 实例069 导航条的动画效果 100 实例070 不用图片实现质感导航条 102 实例071 弹出式下拉菜单 103 实例072 二级导航菜单 105 实例073 半透明背景的下拉菜单 106 实例074 展开式导航条 110 实例075 解释型菜单 111 实例076 自动隐藏的弹出式菜单 112 实例077 收缩式导航菜单 114 实例078 树状导航菜单 116 实例079 鼠标右键菜单 117 3.6 状态栏设计 118 实例080 状态栏中的跑马灯文字 119 实例081 在状态栏中收缩显示文字 120 实例082 在状态栏中显示数字时钟 121 3.7 弹出窗口控制 122 实例083 在首页右下角弹出渐显的广告窗口 122 实例084 浮动的广告窗口 124 实例085 打开居中显示详细信息的新窗口 126 实例086 关闭弹出窗口时自动刷新父窗口 128 实例087 在弹出的对话框中选择个性头像 130 实例088 自动关闭的广告窗口 131 实例089 关闭IE主窗口时,不弹出询问对话框 132 实例090 弹出提示对话框并重定向网页 133 3.8 弹出网页对话框 134 实例091 弹出全屏显示的网页模式对话框 134 实例092 网页拾色器 136 实例093 日期选择器 138 3.9 无边框窗口 140 实例094 全屏显示无边框有滚动条窗口 140 实例095 应用JavaScript实现指定尺寸的无边框窗口 142 实例096 应用CSS+DIV实现无边框窗口 143 实例097 通过双击鼠标实现页面自动滚屏 145 3.10 其他 146 实例098 设置主页 147 实例099 收藏本站 147 实例100 离开时启动收藏夹 148 第4章
验证
控件 151 4.1 通信类
验证
152 实例101
验证
E-mail地址 152 实例102
验证
网址 153 实例103
验证
电话号码 155 实例104
验证
邮政编码 156 4.2 日期与时间类
验证
157 实例105
验证
日期的输入格式 157 实例106
验证
时间的输入格式 159 实例107
验证
日期与时间的输入格式 161 4.3 文本与数值
验证
163 实例108
验证
表单元素
是否
为空 163 实例109
验证
输入的数值
是否
在指定范围内 165 实例110
验证
数据
是否
为数值型 166 实例111
验证
用户名和密码
是否
正确 167 实例112
验证
两个文本框的值
是否
相等 168 实例113
验证
输入的文本
是否
为汉字 170 实例114 限制输入字符串的长度 171 实例115
验证
字符串
是否
以指定字符串开头 172 实例116
验证
身份证号码 174 实例117
验证
护照编号 175 实例118
验证
车牌号码 176 4.4 自定义
验证
177 实例119
验证
合法
的数据表名称 178 实例120
验证
货币类型 179 第5章 构建
PHP
动态网页 181 5.1 页面间的数据传递 182 实例121 通过POST方法提交 182 实例122 通过GET方法提交 183 实例123 通过SESSION实现页面间的数据传递 184 5.2 页面跳转 185 实例124 使用header()函数实现页面跳转 185 实例125 应用HTML标记进行跳转 186 实例126 使用脚本语言实现页面跳转 187 5.3 包含文件 189 实例127 include()函数的应用 189 实例128 include_once()函数的应用 190 实例129 require()函数的应用 191 实例130 require_once()函数的应用 192 实例131 使用switch语句实现站内导航 193 5.4 COOKIE技术 195 实例132 表单提交与COOKIE 195 实例133 简单的COOKIE计数器 197 实例134 使用COOKIE记录用户登录信息 198 实例135 使用COOKIE限制用户访问网站的时间 199 5.5 会话控制 201 实例136 通过SESSION判断用户的权限 201 实例137 通过SESSION禁止页面刷新 203 实例138 通过SESSION存储数据 204 实例139 通过SESSION实现购物车的功能 205 5.6 框架的应用 209 实例140 框架在聊天室中的应用 209 实例141 使用框架嵌套技术居中显示框架页 211 第6章
PHP
与MySQL数据库技术 213 6.1 连接MySQL数据库 214 实例142 通过mysql_connect函数连接数据库 214 实例143 通过Mysqli_connect()函数连接数据库 216 实例144 通过面向对象连接数据库 217 6.2 数据插入 218 实例145 单条数据录入 218 实例146 批量数据录入 220 实例147 插入系统日志信息 222 6.3 数据更新 224 实例148 单条数据更新 224 实例149 批量数据更新 226 6.4 数据查询 227 实例150 不刷新页面筛选数据库中的数据 227 实例151 查询企业员工的详细信息 229 6.5 数据删除 231 实例152 单条数据删除 231 实例153 批量数据删除 232 实例154 删除数据前给予提示信息 234 实例155 统计从数据库里删除的记录数 236 6.6 在线删除表或索引 237 实例156 在线删除指定的数据表 237 实例157 在线删除多个指定的数据表 239 实例158 在线删除指定数据表中的索引 241 6.7 清除部分或全部数据表中的数据 243 实例159 清空指定数据表中的所有数据 243 实例160 清空指定数据表中的指定数据 245 实例161 批量清空数据表 246 6.8 MYSQL数据库的备份 248 实例162 通过命令模式备份数据库 248 实例163 通过
php
MyAdmin备份数据库 249 实例164 通过手动方式备份数据库 251 6.9 MYSQL数据库的恢复 252 实例165 通过命令模式恢复数据库 252 实例166 通过
php
MyAdmin恢复数据库 253 实例167 通过手动方式恢复数据库 255 6.10 动态创建数据库、数据表和字段 255 实例168 动态创建MySQL数据库 255 实例169 动态创建MySQL数据表 257 实例170 动态创建字段 259 实例171 动态创建
一个
完整的数据库 261 6.11 数据的导入导出 263 实例172 MySQL数据库自身的导入导出 263 实例173 SQL Server数据导入到MySQL数据库 266 实例174 Aceess数据导入到MySQL数据库 268 6.12 分页技术 270 实例175 查询结果的分页显示 271 实例176 单击页码跳转到指定页 272 实例177 输入页码跳转到指定页 275 实例178 超长文本的分页显示 276 实例179 查询结果的分栏显示 278 实例180 分类、分栏和分页的综合应用 279 第7章
PHP
与其他数据库技术 283 7.1
PHP
操纵ACCESS数据库 284 实例181 通过ADO方式连接ACCESS数据库 284 实例182 通用数据信息的查询 285 实例183 查询结果的分页显示 287 实例184 用户身份
验证
类的实现 289 实例185 图片的分栏显示 291 7.2
PHP
操纵SQL Server数据库 292 实例186 通过ADO方式连接SQL Server数据库 292 实例187 通过mssql_connect()函数连接SQL Server数据库 293 实例188 通过ADO方式实现指定时间段的信息检索 294 实例189 通过函数实现商品信息的检索 296 实例190 通过ADO方式实现输入页码跳转到指定页 297 实例191 通过函数实现单击页码跳转到指定页 300 实例192 添加图书类的实现 302 第8章 SQL查询相关技术 305 8.1 数据库操作 306 实例193 创建数据库 306 实例194 查看数据库 307 实例195 删除数据库 308 8.2 数据表操作 308 实例196 创建数据表 309 实例197 查看数据表 310 实例198 删除数据表 311 8.3 查询常量 312 实例199 查询数值型数据 312 实例200 查询字符串 313 实例201 查询日期型数据 314 实例202 查询逻辑型数据 316 实例203 查询所有非空数据 318 8.4 查询变量 319 实例204 利用变量查询字符串数据 319 实例205 利用变量查询数值型数据 321 8.5 查询指定的n条记录 322 实例206 查询前n条记录 323 实例207 查询后n条记录 324 实例208 查询从指定位置开始的n条记录 325 实例209 查询统计结果中的前n条记录 326 8.6 查询周期、日期 328 实例210 查询指定时间段的数据 328 实例211 按月查询统计数据 329 8.7 大小比较、逻辑查询、重复 330 实例212 查询大于指定条件的记录 330 实例213 查询结果不显示重复记录 332 实例214 NOT与谓词进行组合条件的查询 333 实例215 显示数据表中的重复记录和记录条数 335 8.8 排序、分组统计 336 实例216 对数据进行降序查询 336 实例217 对数据进行多条件排序 337 实例218 对统计结果进行排序 338 实例219 单列数据分组统计 340 实例220 多列数据分组统计 341 实例221 多表分组统计 342 8.9 聚集函数 344 实例222 使用聚集函数SUM对学生成绩进行汇总 344 实例223 使用聚集函数AVG
求
某班学生的平均成绩 346 实例224 使用聚集函数MIN
求
销售额、利润最少的商品 347 实例225 使用聚集函数MAX
求
月销售额完成最多的销售记录 349 实例226 使用聚集函数COUNT
求
日销售额大于某值的记录数 350 实例227 使用聚集函数First或Last
求
数据表中第一条或最后一条记录 352 8.10 多表查询 354 实例228 使用select语句进行多表查询 354 实例229 使用表的别名 355 实例230 合并多个结果集 356 8.11 嵌套查询 358 实例231 简单的嵌套查询 358 实例232 复杂的嵌套查询 359 实例233 嵌套查询在查询统计中的应用 361 8.12 子查询 362 实例234 使用子查询作派生的表 362 实例235 使用子查询作表达式 364 实例236 使用子查询关联数据 365 8.13 联合语句 367 实例237 多表联合查询 367 实例238 对联合查询后的结果进行排序 368 实例239 条件联合语句 369 8.14 内连接查询 371 实例240 简单内连接查询 371 实例241 复杂内连接查询 372 8.15 外连接查询 373 实例242 使用外连接进行多表联合查询 373 实例243 left outer join查询 375 实例244 right outer join查询 376 8.16 IN子查询 377 实例245 利用in或notin语句限定范围 377 实例246 用IN查询表中的记录信息 379 实例247 由IN引入的关联子查询 380 8.17 交叉表查询 382 实例248 利用transform分析数据 382 实例249 利用transform统计数据 383 8.18 函数查询 385 实例250 使用格式化函数转换查询条件的数据类型 385 实例251 在查询中使用字符串函数 387 实例252 在查询中使用日期函数 388 8.19 having语句应用 390 实例253 利用having语句过滤分组数据 390 第9章 MySQL高级应用技术 393 9.1
PHP
的mysqli扩展 394 实例254 通过mysqli扩展技术实现数据库信息的检索 394 实例255 查看服务器连接错误报告 395 实例256 通过mysqli扩展技术实现多表查询 397 实例257 通过mysqli扩展技术实现内存的回收 398 9.2 MySQL视图的应用 399 实例258 创建视图 400 实例259 修改视图 401 实例260 应用视图 403 9.3 MySQL存储过程 404 实例261 存储过程的创建 404 实例262 使用存储过程实现用户注册 405 9.4 MySQL触发器 407 实例263 创建触发器 407 实例264 查看触发器 408 9.5 MySQL事务 409 实例265 使用事务处理技术实现关联表间信息的删除 409 实例266 使用事务处理技术实现银行的安全转账 411 第10章 字符串的处理技术 413 10.1 字符串的应用及处理 414 实例267 获取字符串的长度 414 实例268 字符串大小写之间的转换 416 实例269 字符串首尾空格的处理 417 实例270 字符串的逆序输出 418 实例271 字符串格式化输出 419 实例272 字符串的分割与连接 420 实例273 特殊字符的查找 421 实例274 字符串的替换 423 实例275 字符串的大小比较 424 实例276 获取两个字符串的相似度 425 实例277 字符串的base64编码 426 实例278 字符串的url编码 427 实例279 特殊字符的转义 429 实例280 字符与ASCII之间的转换 429 实例281 合理定义上传文件名称 430 实例282 通过异或方式对字符串进行加密 432 实例283 金额的格式化输出 433 实例284 字符串首字母的大小写转换 434 实例285 字符数组的建立 434 实例286 字符串与数字之间的转换 435 实例287 利用
正则表达式
实现字符串的匹配查找 437 实例288 利用IP地址查找主机所在地 438 10.2 Web程序中常见字符串问题处理及解决方案 439 实例289 HTML标记的原义输出 439 实例290 解决用substr()函数对中文字符串截取时的乱码 441 实例291 创建
PHP
5.0新型字符串 442 实例292 字符串与HTML标记相互转换 443 第11章
PHP
面向对象编程技术 445 11.1
PHP
面向对象基础 446 实例293 数据成员的初始化 446 实例294 父类构造函数的调用 447 实例295 对象的克隆 448 实例296 类的继承 449 11.2
PHP
中常用类 451 实例297 数据库连接类 451 实例298 数据信息检索类 452 实例299 数据信息录入类 454 实例300 数据信息更改类 455 实例301 数据信息删除类 457 实例302 计数器类 459 实例303 翻页类 460 实例304 购物车类 462 第12章 文件管理 467 12.1 文件上传 468 实例305 以二进制形式上传文件到数据库 468 实例306 上传文件到服务器 469 实例307 限制大小的文件上传 471 实例308 限制上传文件的类型 472 12.2 图片上传 474 实例309 以二进制形式上传图片到数据库 474 实例310 限制上传图片的格式 476 实例311 上传单图片到服务器并显示 477 实例312 上传多图片到服务器并分页显示 479 12.3 下载 481 实例313 通过链接方式下载 481 实例314 应用header()函数实现下载 482 12.4 文件遍历 484 实例315 遍历指定目录下的所有文件 484 实例316 文件浏览 485 12.5 文件操作 488 实例317 创建、复制、移动、删除文件 488 实例318 修改文件名 489 实例319 判断文件
是否
存在 490 实例320 从文本文件中读取注册服务条款 491 实例321 应用文本文件保存访客人数的计数器 493 实例322 判断文件
是否
被改动 494 12.6 目录操作 496 实例323 创建目录 496 实例324 删除目录 497 实例325 获取当前脚本目录 498 实例326 读取注册表信息 499 第13章 图像和多媒体技术 503 13.1 头像选择 504 实例327 通过下拉列表选择头像 504 实例328 从网页对话框中选择头像 505 13.2 图像与统计 507 实例329 图形计数器 507 实例330 通过图像显示投票统计结果 508 13.3 控制、显示图片特效 509 实例331 通过鼠标滑轮控制图片大小 509 实例332 显示随机图像 510 实例333 获取页面中图像的实际尺寸 511 实例334 图像的手动播放 512 实例335 图像的自动播放 513 13.4 MP3点播与下载 514 实例336 MP3在线点播 514 实例337 MP3下载 515 13.5 嵌入Flash动画 516 实例338 在网页中嵌入背景透明的Flash 516 实例339 Flash播放器的实现 517 13.6 影音播放 518 实例340 嵌入式流媒体播放器的实现 518 实例341 在网页中加入可控的背景音乐 520 第14章 信息提取与图表分析技术 521 14.1 简单图表 522 实例342 连接GD2函数库 522 实例343 利用GD2函数绘制文字 523 实例344 应用GD2函数绘制几何图形 524 实例345 向图表中添加行和列标签 526 实例346 图表分析产品数据 528 实例347 图表显示数据并打印 529 14.2 柱形图表 531 实例348 单商品月销售量柱形图分析 531 实例349 将汇总数据利用图表分析 533 实例350 对比数据图表分析 535 实例351 图表动态分析不同的数据表 538 实例352 图表分析投票结果 541 14.3 折线图表 543 实例353 商品的价格走势分析 543 实例354 折线图表分析人口出生率 545 实例355 网站年终访问量曲线分析 547 实例356 年销售额及利润图表分析 550 14.4 饼形图表 552 实例357 饼形图分析软件图书市场占有率 552 实例358 多饼形图分析企业各类员工的比例 555 第15章 报表与打印技术 559 15.1 Web打印 560 实例359 调用IE自身的打印功能实现打印 560 实例360 打印指定框架中的内容 561 实例361 利用WebBrowser打印报表 563 实例362 设置页眉页脚 564 15.2 利用Word打印报表 567 实例363 将Web页中的表格导出到Word并打印 567 实例364 打开指定的Word文档并打印 569 实例365 调用word自动打印指定格式的会议记录 570 15.3 利用Excel打印报表 572 实例366 将Web页面中的数据导出到Excel 572 实例367 将Web页面中的数据导出到Excel并自动打印 574 15.4 利用CSS样式打印 577 实例368 利用CSS样式打印页面中的指定内容 577 实例369 利用CSS样式实现分页打印 579 15.5 套打印邮寄产品单 581 实例370 打印汇款单 582 实例371 打印快递单 583 实例372 打印信封 585 第16章 网络通信技术 587 16.1 邮件技术 588 实例373 SMTP服务器的安装与配置 588 实例374 POP3服务器的安装与配置 590 实例375 利用mail()函数实现邮件发送 592 实例376 发邮件类 594 实例377 收邮件类 597 实例378 查找邮件 602 实例379 删除邮件 604 实例380 邮件群发 605 16.2 发送短信 607 实例381 通过fsockopen()函数发送短信 607 实例382 通过调用Web Service发送短信 608 实例383 短信群发 610 第17章
PHP
与XML技术 613 17.1 读写XML文件 614 实例384 创建XML文件 614 实例385 读取XML文件 615 实例386 添加XML数据 617 实例387 查询XML文件 619 实例388 修改XML文件 620 实例389 删除XML文件 623 实例390
PHP
+XML留言板 624 17.2 XML文件转换 628 实例391 XSL转换XML文件 628 实例392 在HTML页面中使用XML文件 629 实例393 在XML文件中应用CSS样式 630 第18章 安全技术 633 18.1 用户登录 634 实例394 用户安全登录 634 实例395
验证
码技术登录 635 实例396 防止用户直接输入地址访问
PHP
文件 637 18.2 数据加密 638 实例397 对登录密码进行base64编码 638 实例398 对查询字符串进行url编码 639 实例399 MD5加密登录用户名称和密码 640 实例400 使用crypt()函数进行加密 642 18.3 Access数据库安全 643 实例401 操作带密码的Access数据库 644 实例402 防止Access数据库被下载 646 18.4 防止SQL注入 647 实例403 过滤HTML非法字符 647 实例404 禁止用户输入字符串中的危险字符 649 18.5 获取客户端信息 650 实例405 确定对方的IP地址 651 实例406 获取客户端TCP/IP端口的方法 652 18.6 禁止用户复制网页内容 653 实例407 禁止复制网页内容 653 实例048 禁止网页被另存为 654 18.7 禁止用户刷新屏幕 655 实例409 屏蔽IE主菜单 655 实例410 屏蔽键盘相关事件 657 实例411 屏蔽鼠标右键 659 第19章
PHP
高级应用技术 661 19.1
PHP
操纵Word 662 实例412 将数据库中的数据保存到Word 662 实例413 将查询结果保存到Word 664 19.2
PHP
操纵Excel 666 实例414 将Excel中的数据导出到MySQL数据库 667 实例415 将查询结果保存到Excel 669 19.3
PHP
中压缩与解压文件 672 实例416
PHP
中压缩RAR文件 672 实例417
PHP
中解压RAR文件 673 实例418
PHP
中压缩ZIP文件 674 实例419
PHP
中解压ZIP文件 675 19.4 信息共享 676 实例420 在
PHP
中实现ASP中的Application功能 676 实例421 图形计数器 677 19.5
PHP
管理FTP服务器 679 实例422 连接FTP服务器 679 实例423 上传文件到FTP服务器 680 实例424 从FTP服务器中下载文件 682 实例425 更改FTP服务器中的文件名称 683 实例426 删除FTP服务器中指定的文件 684 实例427 在FTP服务器中建立指定的目录 686 实例428 获取FTP服务器中指定目录下的文件列表 687 第20章 综合应用 689 20.1 用户注册 690 实例429 一般用户注册 690 实例430 带检测用户名的用户注册 692 实例431 分步用户注册 694 20.2 留言本 696 实例432 简易留言本 696 实例433 带留言分类的留言本 698 实例434 具有版主回复的留言本 700 20.3 聊天室 702 实例435 数据库形式的聊天室 703 实例436 聊天室中私聊的实现 707 20.4 论坛 710 实例437 查看主题信息 710 实例438 发布主题信息 713 实例439 回复主题信息 714 实例440 删除主题及回复信息 716 20.5 购物车 717 实例441 添加至购物车 718 实例442 查看购物车 719 实例443 从购物车中移去指定商品 722 实例444 修改商品购买数量 723 实例445 清空购物车 724 实例446 收银台结账 725 20.6 博客网站 727 实例447 博客用户图片管理 727 实例448 博客文章评论管理 733 实例449 用户安全登录 738 实例450 用户安全退出 740 20.7 搜索 742 实例451 一般搜索 742 实例452 高级搜索 744 实例453 常用搜索 745 技术要点对应实例位置 749
带你学会使用
正则表达式
内容简介:
正则表达式
,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。计算机科学的
一个
概念。
正则表达式
使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,
正则表达式
通常被用来检索、替换那些符合某个模式的文本。 本门课程主要讲解
正则表达式
的引用场景和一些基础用法,让大家对
正则表达式
有
一个
清晰地认识。 为什么需要掌握
正则表达式
?
正则表达式
非常灵活、而且功能非常强大,它可以迅速地用极简单的方式达到字符串的复杂控制。而对于刚接触的人来说,
正则表达式
比较晦涩难懂。这门课程可以非常快速的帮助大家理解
正则表达式
,以及掌握如何在实际场景中用到它。课程大纲: 为了让大家快速系统了解
正则表达式
知识,我为您总结了思维导图,帮您梳理学习重点,建议收藏!
php
正则网址
验证
,
php
使用
正则表达式
验证
网址链接
之前折腾了
一个
短网址程序,过程挺顺利的,唯一就是在
验证
网址这一步卡了壳,花费了整个过程的一大半时间,最终经过一番搜索、折腾和测试,才算找到
一个
完美的解决方案。在短网址程序中,
验证
网址无疑是很重要的。且不说各种安全问题,就是一些「浑水摸鱼」的网址占据大量的短网址都非常让人头疼。提到
验证
网址,我相信大多数人第一时间反应出来的都是
正则表达式
,的确,这很科学,但何奈自己正则太渣,平时想要匹配一段复杂的 H...
正则表达式
规则总结
最近刚刚学到了一点点
正则表达式
的基础知识,解决了
一个
问题,个人感觉
正则表达式
在
验证
字符串还是很方便的,再次总结了几个规则,分享给一起学习进步的人: 现在许多编程语言(Java ,JavaScript ,
PHP
,python。。。)都会有采用
正则表达式
来处理文本,可以使用
正则表达式
实现高级文本的替换和查找功能,值得注意的在不同的编程语言中,
正则表达式
的语法规则都是一样的,但是在不同的编程语言中的调...
JavaScript
87,910
社区成员
224,616
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章