POSIX正则表达是PHP编译器的默认风格,PHP中还提供了许多POSIX正则表达式函数,例如ereg()、eregi()、split()和sql_regcase()等。
1. ereg()函数
ereg()函数可以再字符串中查找与指定正则表达式模式相匹配的子串,其语法格式为:
bool ereg ( string pattern, string string [, array regs] )
功能说明:
以区分大小写的方式在string中寻找与给定的正则表达式pattern所匹配的子串。 如果找到与pattern中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数regs,则匹配项将被存入regs数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。 如果在string中找到pattern模式的匹配则返回 true,如果没有找到匹配或出错则返回 false。
参数说明:
pattern:指定相应的正则表达式
string:指定需要进行模式匹配的字符串
regs:用来存放匹配结果,其中的regs[0]为原字符串string;regs[1]为第一个符合匹配规则的字符串;regs[2]为第二个符合匹配规则的字符串,余下依次类推。若省略该参数,则表示只是单纯匹配,若匹配则成功则返回true,否则返回false。
例1:
使用POSIX字符簇进行验证,其功能是校验一个字符串中是否含有字母字符。代码如下:
<?php
$string="a12345";$pattern="[[:alpha:]]";if(ereg($pattern, $string)){ echo "在\"$string\"中至少含有一个字母字符";}else{ echo "在\"$string\"中不含有任何字母字符";}?>例2:
以下代码片断接受 ISO 格式的日期(YYYY-MM-DD)然后以 DD.MM.YYYY 格式显示:
<?php
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { echo "$regs[3].$regs[2].$regs[1]";} else { echo "Invalid date format: $date";}?>注eregi()函数的用法与ereg()函数相同,但是这个函数不区分大小写。
2. split()函数
split()函数使用正则表达式来把字符串拆分为较小的块,作为一个数组返回。如果出现错误,则split()返回false。使用split()函数还可以根据需要选择要返回多少个小块。split()函数的语法格式如下:
array split ( string pattern, string string [, int limit] )
功能说明:
本函数返回一个字符串数组,每个单元为string经区分大小写的正则表达式pattern作为边界分割出的子串。如果设定了limit,则返回的数组最多包含limit个单元,而其中最后一个单元包含了string中剩余的所有部分。如果出错,则 split() 返回 FALSE。
参数说明:
pattern:指定相应的正则表达式
string:指定需要进行分割的字符串
limit:指定将字符串string切分的最大数目。该参数的默认值为-1,表示没有限制。
例3:
使用split()函数进行拆分字符串“3*5+i/6-12”,代码如下:
<?php
$expression="3*5+i/6-12";$pattern="[+/-]";$limit=5;$part=split($pattern, $expression, $limit);print_r($part);?>结果为:
Array ( [0] => 3*5 [1] => i [2] => 6 [3] => 12 )
3. ereg_replace()函数
ereg_replace()函数可以用来查找和替换子字符串,该函数与字符串处理函数str_replace()实现的功能的功能是一样的,其语法格式如下:
string ereg_replace ( string pattern, string replacement, string string )
功能说明:
该函数在string中扫描与pattern匹配的部分,并将其替换为replacement。返回替换后的字符串,如果没有可供替换的匹配的选项则会返回原字符串。
参数说明:
pattern:指定的相应正则表达式
replacement:指定替换的内容
string:指定需要进行替换的字符串
ereg_replace()函数将在string中查找符合pattern规则的字符串,并且用replacement进行替换。
例4:
使用ereg_replace()函数将字符串“欢迎来到上海”中的“上海”替换为“巴中”,代码如下:
<?php
$pattern="上海"; $string="欢迎来到上海"; $replacement="巴中"; echo ereg_replace($pattern,$replacement,$string); ?>结果:
欢迎来到巴中
引用文献:
《大道PHP LAMP+Zend+开源框架整合开发与实战》
《PHP手册》