15.3.3 根据正则表达式分割字符串的函数
函数split()通过匹配正则表达式作为分割符,将字符串分割出各个字串,存入数组中。该函数的语法如下所示。
array split(string$pattern,string$string[,int$limit])
该函数的返回值是一个数组,其每个单元都是参数$string经正则表达式$pattern作为分割符分出的字串。该函数第3个参数是可选参数,如果指定了参数$limit,则返回数组最多包含limit个单元,其中最后一个单元包含参数字符串$string剩余的所有部分。如果执行出现错误,函数split()返回FALSE。代码15-5演示了该函数的用法。
代码15-5 在程序中使用函数split()15-5.php
01 <?php
02 $str="aaa~bbb~ccc~ddd";//定义字符串变量
03 echo"字符串截取前:$str";
04 echo"<br/>";
05 echo"<br/>";
06
07 $sep_arr=split("~",$str);//分割字符串变量$str
08 echo"<b>字符串截取后:</b><br/>";
09 echo"<pre>";
10
11 print_r($sep_arr);
12 ?>
【代码解析】这段代码第7行使用函数split()按符号~分割字符串参数$str,这里的“~”实际是一个正则表达式,split按其模式来分割字符串参数$str,并将分割后的字符串存入数组返回。代码15-5的执行结果如图15-5所示。
代码15-5在调用函数split()时用正则表达式并不明显,下面的示例代码15-6更能体现正则表达式在函数split()中的使用。
代码15-6 函数split()的使用15-6.php
01 $str="AAAaaaA~BbbbC~DcccE~FdddZZZ";//定义字符串变量
02 echo"<b>字符串截取前:</b><br/>$str";
03 echo"<br/>";
04 echo"<br/>";
05
06 $sep_arr=split("[a-z]{3}",$str);//分割字符串
07 echo"<b>使用aaa,bbb,ccc,ddd做分割字符串后:</b>";
08 echo"<pre>";
09
10 print_r($sep_arr);
11 ?>
【代码解析】在代码15-6中,传入函数split()作为分割符的是一个正则表达式:[a-z]{3},这是一个比较简单的正则表达式,它可以匹配任意3个小写字母。在即将被分割的字符串AAAaaaA~BbbbC~DcccE~FdddZZZ,该模式可以匹配aaa、bbb、ccc和ddd,所以原字符串通过函数split()按正则表达式[a-z]{3}所匹配的字符,被分割成5个部分:AAA、A~B、C~D、E~F和ZZZ。这段代码的执行结果如图15-6所示。
共有条评论 网友评论