正则表达式之——POSIX正则表达式函数

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手册》


未完待续…

你可能感兴趣的:(正则表达式之——POSIX正则表达式函数)