您好,欢迎访问一九零五行业门户网

第4章 数据处理-php正则表达式-郑阿奇(续)_php入门_脚本之家

第4章 数据处理-php正则表达式-郑阿奇(续) ,学习php正则表达式的朋友可以参考下。php正则是比较不错应用。
1.正则表达式基础知识
含义:由普通字符和(a-z)和一些特殊字符组成的字符串模式
功能:有效性验证。
替换文本。
从一个字符串提取一个子字符串。
分类:posix和perl
posix风格更容易掌握,但不能用于二进制模式,而perl相对比较复杂。
2.posix风格的正则表达式
1.编写正则表达式
表4.3 posix正则表达式语法格式列表
以下是几个简单的正则表达式的例子:
●'[a-za-z0-9] ':表示所有的大写字母、小写字母及0到9的数字。
●'^hello':表示以hello开始的字符串。
●'world$':表示以world结尾的字符串。
●'.at':表示以除\n外的任意单个字符开头并以at结尾的字符串,如cat、nat等。
●'^[a-za-z]':表示一个以字母开头的字符串。
●'hi{2}':表示字母h后跟着两个i即hii。
●'(go)+':表示至少含有一个'go'字符串的字符串,如'gogo'
身份证号码一般由18位数字或17位数字后面加一个x或y字母组成,要匹配身份证号码,可以写作:
^[0-9]{17}([0-9]|x|y)$
email地址的正则表达式可以写作:
^[a-za-z0-9\-]+@[a-za-z0-9\-]+\.[a-za-z0-9\-\.]+$
2.字符串的匹配
ereg()和eregi()函数
使用ereg()函数可以查找字符串与子字符串匹配的情况,并返回匹配字符串的长度,还可以借助参数返回匹配字符的数组。语法格式如下:
int ereg(string ($pattern) , string $string [, array $regs ])
代码如下:
3.字符串的替换
ereg_replace()函数语法格式如下:
string ereg_replace(string $pattern , string $replacement , string $string)
说明:函数使用字符串$replacement替换字符串$string中与$pattern匹配的部分,并返回替换后的字符串。若未找到匹配项,则原样返回
代码如下:
4.分割数组
使用split()函数可以完成与explode()函数一样的功能,而且可以根据给出的正则表达式来分割字符串,并返回一个数组。语法格式如下:
array split(string $pattern , string $string [, int $limit ])
5.产生正则表达式
3.perl兼容的正则表达式
1.编写正则表达式
表4.4 perl兼容正则表达式扩充的语法格式
2.字符串匹配
preg_match()函数进行字符串的查找,语法格式如下:
int preg_match(string $pattern , string $subject [, array $matches [, int $flags ]])
说明:该函数的结构与ereg()函数类似,在$subject字符串中搜索与$pattern给出的正则表达式相匹配的内容。
preg_match()函数返回$pattern所匹配的次数。不是0次(没有匹配)就是1次,因为preg_match()函数在第一次匹配之后将停止搜索
还有一个是preg_match_all(),从第一个匹配的末尾开始继续搜索,直到搜索完整个字符串。
preg_match_all()函数参数$flags的值可以取以下三种:
●preg_pattern_order。默认项,表示$matches[0]为全部模式匹配的数组,
$matches[1]为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。
●preg_set_order。如果设定此标记,则$matches[0]为第一组匹配项的数组,$matches[1]为第二组匹配项的数组,以此类推。
●preg_offset_capture。preg_offset_capture可以和其他两个标记组合使用,
如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。
3.字符串的替换
使用preg_replace()函数能够完成与函数ereg_replace()相同的功能,在字符串中查找匹配的子字符串,并用指定字符串替换子字符串。
语法格式如下:
mixed preg_replace(mixed $pattern , mixed $replacement , mixed $subject [, int $limit ])
4.字符串的分割
preg_split()函数可以使用正则表达式作为边界分割一个字符串,并将子字符串存入一个数组返回,作用与split()函数类似。
语法格式如下:
array preg_split(string $pattern , string $subject [, int $limit [, int $flags ]])
说明:本函数区分大小写,返回一个数组,数组包含$subject中沿着与$pattern匹配的边界所分割的子串。
$limit是可选参数,如果指定则最多返回$limit个字串,如果省略或为-1,则没有限制。
$flags的值可以是以下三种:
●preg_split_no_empty。如果设定本标记,则函数只返回非空的字符串。
●preg_split_delim_capture。如果设定本标记,定界符模式中的括号表达式的匹配项也会被捕获并返回。
preg_split_offset_capture。如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。
4.3实例-验证表单内容
【例4.4】 使用正则表达式验证用户输入的表单内容是否满足格式要求。
新建ex4_4_hpage.php文件,输入以下代码。
代码如下:
新建ex4_4_ppage.php文件,输入以下代码:
2.字符串匹配
preg_match()函数进行字符串的查找,语法格式如下:
int preg_match(string $pattern , string $subject [, array $matches [, int $flags ]])
说明:该函数的结构与ereg()函数类似,在$subject字符串中搜索与$pattern给出的正则表达式相匹配的内容。
preg_match()函数返回$pattern所匹配的次数。不是0次(没有匹配)就是1次,因为preg_match()函数在第一次匹配之后将停止搜索
还有一个是preg_match_all(),从第一个匹配的末尾开始继续搜索,直到搜索完整个字符串。
preg_match_all()函数参数$flags的值可以取以下三种:
●preg_pattern_order。默认项,表示$matches[0]为全部模式匹配的数组,
$matches[1]为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。
●preg_set_order。如果设定此标记,则$matches[0]为第一组匹配项的数组,$matches[1]为第二组匹配项的数组,以此类推。
●preg_offset_capture。preg_offset_capture可以和其他两个标记组合使用,
如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。
3.字符串的替换
使用preg_replace()函数能够完成与函数ereg_replace()相同的功能,在字符串中查找匹配的子字符串,并用指定字符串替换子字符串。
语法格式如下:
mixed preg_replace(mixed $pattern , mixed $replacement , mixed $subject [, int $limit ])
4.字符串的分割
preg_split()函数可以使用正则表达式作为边界分割一个字符串,并将子字符串存入一个数组返回,作用与split()函数类似。
语法格式如下:
array preg_split(string $pattern , string $subject [, int $limit [, int $flags ]])
说明:本函数区分大小写,返回一个数组,数组包含$subject中沿着与$pattern匹配的边界所分割的子串。
$limit是可选参数,如果指定则最多返回$limit个字串,如果省略或为-1,则没有限制。
$flags的值可以是以下三种:
●preg_split_no_empty。如果设定本标记,则函数只返回非空的字符串。
●preg_split_delim_capture。如果设定本标记,定界符模式中的括号表达式的匹配项也会被捕获并返回。
preg_split_offset_capture。如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。
4.3实例-验证表单内容
【例4.4】 使用正则表达式验证用户输入的表单内容是否满足格式要求。
新建ex4_4_hpage.php文件,输入以下代码。
代码如下:
新建ex4_4_ppage.php文件,输入以下代码:
代码如下:
其它类似信息

推荐信息