10.3 POSIX扩展正则表达式函数
PHP中实现POSIX正则表达式的函数有7个。下面介绍一下主要函数的语法。
10.3.1 字符串匹配函数——ereg()和eregi()
如果要实现字符串的匹配,可以使用函数ereg()或eregi(),其中函数eregi()在进行字符串匹配时不区分大小写,而函数ereg()则区分。语法形式如下。
bool ereg ( string pattern, string string [, array regs] )
以区分大小写的方式在string中寻找与给定的正则表达式pattern所匹配的子串,如果给出了第三个参数regs,则匹配项将被存入regs数组中,其中,$regs[0]包含整个匹配的字符串。
例10-1 E-mail验证,代码如下。
<?php $email = "hbrjxy001@hbsi.cn"; $ereg = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)"; //邮箱检测 if(ereg($ereg , $email)) { echo "邮箱合法!"; } else { echo "邮箱不合法!"; } ?>
运行结果输出如图10-1所示。
10.3.2 字符串替换函数——ereg_replace()和eregi_replace()
使用函数ereg_replace()或eregi_replace()可以实现字符串的替换。其中函数eregi_replace()在查找匹配项时不区分大小写。语法形式如下。
string ereg_replace ( string pattern, string replacement, string string )
以区分大小写的方式在string中扫描与pattern匹配的部分,并将其替换为replacement。返回值为替换后的字符串,如果没有可供替换的匹配项则返回原字符串。
例10-2 字符串替换,代码如下。
<?php $email = "HBSI@gmail.com"; $mailto = "<a href='mailto:$email'>$email</a>"; echo $mailto ."<br/>"; //去掉email链接 $ereg = "<a([ ]+)href=([\"']*)mailto:($email)([\"'] *)[^>]*>"; //<a>标记前半部分匹配正则表达式 $string = eregi_replace($ereg,"", $mailto); $string = eregi_replace("</a>","", $string); //</a>部分 echo $string; ?>
运行结果输出,如图10-2所示。
10.3.3 字符串拆分函数——split()和spliti()
函数split()或spliti()能够实现利用正则表达式把一个字符串拆分为一个数组,其中spliti()不区分字符串大小写。语法形式如下。
array split ( string pattern, string string [, int limit] )
该函数返回一个字符串数组,每个元素为string经区分大小写的正则表达式pattern作为边界分割出的子串。如果设定了limit,则返回的数组最多包含limit个单元,而其中最后一个单元包含string中剩余的所有部分。如果出错,则返回false。
例10-3 字符串拆分,代码如下。
<?php $date = "2015-03-29 10:10:10"; $ereg = "[-:/]|([ ]+)"; //使用-,:,/ 或者空格作为分隔符 $arr = split($ereg , $date); echo "<pre> "; var_dump($arr); echo " </pre>"; ?>
运行结果输出,如图10-3所示。