PHP 正则表达式函数

PHP preg_split() 函数通过正则表达式分割给定的字符串。

语法

preg_split(pattern, subject, limit, flags) 

参数

mode必需。 以字符串形式指定要搜索的模式。
subject必需。 指定输入字符串。
limit可选。 如果指定,则仅返回 limit 以内的子字符串,并将字符串的其余部分放置在最后一个子字符串中。默认为 -1 或 0 表示"无限制"。
flags可选。 它可以是以下标志的任意组合(与 | 位运算符组合):
  • PREG_SPLIT_NO_EMPTY - 如果设置了此标志,则只有非空块将被返回。
  • PREG_SPLIT_DELIM_CAPTURE - 如果设置此标志,分隔符模式中的括号表达式也将被捕获并返回。
  • PREG_SPLIT_OFFSET_CAPTURE - 如果设置了此标志,则对于每个发生的匹配,还将返回附加字符串偏移量。这会更改数组中的返回值,其中每个元素都是一个数组,由偏移量 0 处的匹配字符串及其在偏移量 1 处的主题中的字符串偏移组成。

返回值

返回一个数组,其中包含沿与pattern匹配的边界分割的subject的子字符串,失败时返回 false .

示例:拆分为子字符串

下面的示例说明如何使用此函数通过空格或逗号 (,) 拆分字符串。

<?php
$str = "hypertext language, programming";

//用逗号或空格字符分割
//其中包括""、\r、\t、\n和\f
$keywords = preg_split("/[\s,]+/", $str);

//显示结果
print_r($keywords);
?> 

输出上述代码的内容为:

Array
(
    [0] => hypertext
    [1] => language
    [2] => programming
) 

示例:拆分为字符

考虑下面的示例,该示例显示如何使用此函数将给定字符串拆分为组成字符.

<?php
$str = "Programming";

//分割成组成字符
$chars = preg_split('//', $str, -1,
                    PREG_SPLIT_NO_EMPTY);

//显示结果
print_r($chars);
?> 

上述代码的输出将是:

Array
(
    [0] => P
    [1] => r
    [2] => o
    [3] => g
    [4] => r
    [5] => a
    [6] => m
    [7] => m
    [8] => i
    [9] => n
    [10] => g
) 

示例:将字符串拆分为匹配项及其偏移量

通过使用 PREG_SPLIT_OFFSET_CAPTURE标志,我们可以捕获匹配偏移量。考虑下面的示例:

<?php
$str = "hypertext language programming";

//按空格字符分割
$chars = preg_split('/ /', $str, -1, 
                    PREG_SPLIT_OFFSET_CAPTURE);

//显示结果
print_r($chars);
?> 

上述代码的输出将是:

Array
(
    [0] => Array
        (
            [0] => hypertext
            [1] => 0
        )

    [1] => Array
        (
            [0] => language
            [1] => 10
        )

    [2] => Array
        (
            [0] => programming
            [1] => 19
        )

)