PHP/MySQL三日通-第三天(二)
三、 处理常规表达式
我们稍微讲讲用ereg()和eregi()两个函数处理常规表达式。前面我已经提过,这些函数有的很简单,有的很复杂,看您的实际需要而定。
使用常规表达式,您可以对一个字符串进行检查,搜索其中的一些结构模式,判定这些模式是否满足您的规定。最普遍的用法包括检查电子邮件地址是否有效(当然,即使这种办法判定有效,也不能保证邮件地址真的存在)。
我们在这里不细究常规表达式的复杂细节了,仅仅给出几个实例。您可以使用上一页中用过的表格 - 把相应的程序代码复制过来,添加到下面的代码段中,就可以看到它是怎样工作的。
首先,我们要确保表格中各栏只能输入字母。下面的常规表达式在用户输入一个或多个小写字母时判定为真,而输入数字是不允许的:
if (!ereg("[a-Z]", $first) || !ereg("[a-Z]", $last)) {
现在我们更进一步,检查字符串的长度是否是四到六位字符长。用[[:alpha:]]是检查字符是不是字母的简单方式。大括号内的数字检查字符个数。还要说明的是,^ 和 $ 分别代表字符串的开始和结束。
if (!ereg("^[[:alpha:]]{4,6}$", $first) || !ereg("^[[:alpha:]]{4,6}$", $last)) {
最后,我们来构造一个常规表达式,来检验电子邮件地址的有效性。这种检验方式的效果已经引发了相当多的讨论。没有什么东西是十全十美的,不过我下面给出的这段程序还是十分奏效的。
if (!ereg(^[-!#$%&*+\./0-9=?A-Z^_`a-z{|}~]+. @. [-!#$%&*+\/0-9=?A-Z^_`a-z{|}~]+.. [-!#$%&*+\./0-9=?A-Z^_`a-z{|}~]+$, $last)) { |
别花太多时间来细究这段代码了,还是先到下一页内容吧。
四、 简便方法
前面的常规表达式怎么样?很有意思,是吧?要是在每个需要检查电子邮件地址的程序里都写上这么一段程序,那才真叫有意思呢?!想想看吧,得写那么乱七八糟的一段程序,还得写上那么多遍!...不过,当然了,还有更简便的方法。
还记得前面? 学过的头文件吗?它能让我们写一段程序,象是这个电子邮件地址的检查程序,然后把这段程序包含进多个程序里面去。这样,我们要改写这段程序时,只须改动一处就行了,不用修改多个文件。
但是,要做到这一点,我们必须用到函数。
我们已经用过很多次函数了。每次我们查询数据库或检查字符串长度时,我们都是用函数来做的。这些函数是PHP自带的。如果您是位热心的程序员,您可以用自己编写的函数来扩充PHP本身的功能。但对本教程而言,这部分内容是太过高深了一点。我们要创建的函数不是那一种,而是写在PHP脚本程序内部的函数。
函数就是一段程序代码,我们可以把一个或多个值传给这段代码,然后这段代码会处理我们传给它的数据并返回一个值。根据实际需要,函数可以很简单,也可以十分复杂。但是只要我们传进去一个数,然后能得到一个数,您管它里面有是复杂还是简单呢!这就是函数的可爱之处。
PHP里的函数与C语言里的函数表现差不多。当我们定义函数时,必须指明函数需要接收什么样的数据。一开始好象不太好理解为什么它要接收数据进去,不过这样可以防止发生一些怪异的问题。函数之所以能做到这一点,是因为函数里面的变量都是私有变量,也就是说,它只在该函数内部存在。例如,您在程序中有一个变量叫$myname,如果您创建了一个函数,想让这个函数也使用那个$myname变量(值也相同),那是不行的。您可以在函数内部创建一个变量,名字也叫$myname,这两个变量可以各平相处,而各自取不同的值。不过我可不建议您这么做!您如果真的这么做了,等半年后您再来修改这样的程序时,您可能就会被弄糊涂了。
那我们现在就来创建一个函数,先来个简单的。我们要给它取个名字,指定它要接收什么的变量。在调用这个函数之前,我们还得定义这个函数。
$#@60;html$#@62; $#@60;body$#@62; $#@60;?php function addnum($first, $second) { $newnum = $first + $second; return $newnum; } echo addnum(4,5); ?$#@62; $#@60;/body$#@62; $#@60;/html$#@62; |
这就行了!首先,我们创建了第一个自己的函数。我们定义了两个新变量,$first和$second,注意它们是怎样被定义的。在调用这个函数时,要给这两个变量按它们出现的顺序赋好值 - 4赋给$first,5赋给$second。然后我们简单地把这两个数加在一起,返回结果。“返回”在这里的意思是把结果送回去。在程序最后部分我们把数字9显示出来。
我们再来创建一个函数,让它对我们的数据库应用有点帮助。一个能妥善处理错误的函数怎么样?试试下面的程序:
$#@60;html$#@62; $#@60;body$#@62; $#@60;?php function do_error($error) { echo "噢,好象有点儿问题...$#@60;br$#@62;"; echo "系统报告的错误是:$error. $#@60;br$#@62;"; echo "最好是暂时关闭网站并通知系统管理员。"; die; } if (!$db = @mysql_connect("localhost","user", "password")) { $db_error = "无法连接到MySQL数据库"; do_error($db_error); } ?$#@62; $#@60;/body$#@62; $#@60;/html$#@62; |
本新闻共2页,当前在第1页 1 2
在运行程序之前,试试关闭MySQL数据库,或使用错误的用户名或口令。您会看到友好的、有用的错误信息 。细心的朋友会注意到在mysql_connect()函数之前的那个@符号。它会抑制系统错误信息,使得程序只能从do_error()函数那里得到有关的错误信息。您还会注意到,我们可以把一个在别处定义的变量作为参数传给函数,而不是在调用时直接赋一个值。
还记得我过函数使用的是私有变量吧?这话说得不完全对。事实上,您可以让函数访问到函数外面的变量。您可能要写一个函数,用它来查询数据库,然后把结果显示在多个网页中。您不想每次都把数据库连接标识都传给函数。在这种情况下,您可以把连接标识定义成一个全局的变量。例如:
$#@60;html$#@62; $#@60;body$#@62; $#@60;?php function db_query($sql) { global $db; $result = mysql_query($sql,$db); return $result; } $sql = "SELECT * FROM mytable"; $result = db_query($sql); ?$#@62; $#@60;/body$#@62; $#@60;/html$#@62; |
这是个很简单的函数,但重要的是,您在调用这个函数时,不必传递$db变量 - 您可以通过 global这个字使得函数可以访问到该变量。在这条语句中您可以定义多个全局变量,各个全局变量之间用逗号隔开。
最后,您可以使用可选参数,这样看起来您已经是真正的专家了。这里面关键的一点是,在函数中定义参数时要给它指定一个缺省值。然后您在调用这个函数时,如果不为该参数变量指定其他值,那么函数会自动把缺省值赋给这个变量。如果您指定了其他值,那么缺省值就不起作用了。
不太明白?比方说,您在连接数据库时,几乎总是连接到相同的服务器,并且使用相同的用户名和口令。不过有时候,您也需要连接到其他的服务器。看看下面的程序:
$#@60;html$#@62; $#@60;body$#@62; $#@60;?php function db_connect($host = "localhost", $user="username", $pass="graeme") { $db = mysql_connect($host, $username, $password); return $db; } $old_db = db_connect(); $new_host = "site.com"; $new_db = db_connect($ne |

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

CMS 代表内容管理系统。它是一种软件应用程序或平台,使用户能够创建、管理和修改数字内容,而无需先进的技术知识。 CMS 允许用户轻松创建和组织内容

数组是编程中用于处理数据的线性数据结构。有时在处理数组时,我们需要向现有数组中添加新元素。在本文中,我们将讨论几种在PHP中向数组末尾添加元素的方法,并附带代码示例、输出以及每种方法的时间和空间复杂度分析。 以下是向数组添加元素的不同方法: 使用方括号 [] 在PHP中,向数组末尾添加元素的方法是使用方括号[]。此语法仅适用于我们只想添加单个元素的情况。以下是语法: $array[] = value; 示例
