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);
    ?> 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出上述代码的内容为:

    Array
    (
        [0] => hypertext
        [1] => language
        [2] => programming
    ) 
    • 1
    • 2
    • 3
    • 4
    • 5

    示例:拆分为字符

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

    <?php
    $str = "Programming";
    
    //分割成组成字符
    $chars = preg_split('//'$str, -1,
                        PREG_SPLIT_NO_EMPTY);
    
    //显示结果
    print_r($chars);
    ?> 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    上述代码的输出将是:

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

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

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

    <?php
    $str = "hypertext language programming";
    
    //按空格字符分割
    $chars = preg_split('/ /', $str, -1, 
                        PREG_SPLIT_OFFSET_CAPTURE);
    
    //显示结果
    print_r($chars);
    ?> 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    上述代码的输出将是:

    Array
    (
        [0] => Array
            (
                [0] => hypertext
                [1] => 0
            )
    
        [1] => Array
            (
                [0] => language
                [1] => 10
            )
    
        [2] => Array
            (
                [0] => programming
                [1] => 19
            )
    
    ) 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20