文章教程

15.4.6用正则表达式分割字符串的函数

9/17/2020 9:26:54 PM 人评论 次浏览

15.4.6 用正则表达式分割字符串的函数

和函数split()一样,兼容PERL正则表达式的函数preg_split()也可以通过一个正则表达式来完成对字符串的分割。该函数的语法如下所示。


array preg_split(string$pattern,string$subject[,int$limit[,int$flag]])


该函数返回一个数组,这个数组包含参数$subject中按与参数$pattern匹配的边界所分割的子串。如果指定了可选的第3个参数$limit,则最多返回limit个子串,如果limit是-1,则表示没有限制,可以用来继续指定可选参数$flag。该函数的第4个参数$flag是可选的,它有如下取值。

❑PREG_SPLIT_NO_EMPTY,如果设定了本标记,则preg_split()只返回非空的部分。

❑PREG_SPLIT_DELIM_CAPTURE,如果设定了本标记,界定符模式中的括号表达式也会被捕获并返回。

❑PREG_SPLIT_OFFSET_CAPTURE,如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意,这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为它在$subject中的偏移量。

代码15-12演示了该函数的用法。

代码15-12 使用函数preg_split()通过正则表达式匹配的分割字符串15-12.php


01 <?php

02 $str='PHP language programming in Web';//定义字符串变量

03 echo"<b>原字符串:</b><br>";

04 echo$str;

05 echo"<br/><br/>";

06

07 $chars=preg_split('//',$str,-1,PREG_SPLIT_OFFSET_CAPTURE);//分割字符串

08 echo"<b>调用函数preg_split()后:</b>";

09 echo"<pre>";

10 print_r($chars);

11 ?>


【代码解析】第2行定义了一个字符串变量,然后第7行通过函数preg_split()对字符串进行分割,代码的执行结果如图15-14所示。

图 15-14 使用函数preg_split()分割字符串到数组

教程类别