WithCoderWithCoderWithCoder

PHP函数preg_split()的使用

    PHP函数 preg_split 用于通过一个正则表达式分隔给定的字符串,它返回分割后的字符串数组。

    函数的语法如下:

preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array

    函数的参数说明如下:

    pattern

        用于搜索的模式(正则表达式),字符串形式。

    subject

        输入字符串(被拆分的字符串)

    limit

        如果指定,将限制分隔得到的子串最多只有limit个,返回的最后一个子串将包含所有剩余部分。limit值为-1, 0或null时都代表“不限制”, 作为php的标准,你可以使用null跳过对flags的设置。

    flags

        flags 可以是任何下面标记的组合(以位或运算 | 组合):

        PREG_SPLIT_NO_EMPTY

        如果这个标记被设置, preg_split() 将仅返回分隔后的非空部分。

        PREG_SPLIT_DELIM_CAPTURE

        如果这个标记设置了,用于分隔的模式中的括号表达式将被捕获并返回。

        PREG_SPLIT_OFFSET_CAPTURE

        如果这个标记被设置, 对于每一个出现的匹配, 将返回匹配项及其偏移量。

         注意:这将会改变返回数组中的每一个元素, 使其每个元素成为一个由第0 个元素为分隔后的子串,第1个元素为该子串在subject 中的偏移量组成的数组。

    提示

    如果不需要正则表达式的功能,可以选择使用更快(也更简单)的替代函数如 explode() 或 str_split()。

    举例:

    例1:使用逗号或空格(包含" ", \r, \t, \n, \f)分隔字符串   

<?php
// 使用逗或空格(包含" ", \r, \t, \n, \f)分隔字符串
$str = 'hello world';
var_dump(preg_split('/[\s,]+/', $str));

    以上代码输出:

array (size=2)
  0 => string 'hello' (length=5)
  1 => string 'world' (length=5)

    例2:将字符串分割成字符

// 字符串分割成字符
$str = 'hello world';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
var_dump($chars);

    以上代码输出:

array (size=11)
  0 => string 'h' (length=1)
  1 => string 'e' (length=1)
  2 => string 'l' (length=1)
  3 => string 'l' (length=1)
  4 => string 'o' (length=1)
  5 => string ' ' (length=1)
  6 => string 'w' (length=1)
  7 => string 'o' (length=1)
  8 => string 'r' (length=1)
  9 => string 'l' (length=1)
  10 => string 'd' (length=1)

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

// 字符串分割匹配及其偏移量
$str = 'hello world';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
var_dump($chars);

    以上代码输出:

array (size=2)
  0 => 
    array (size=2)
      0 => string 'hello' (length=5)
      1 => int 0
  1 => 
    array (size=2)
      0 => string 'world' (length=5)
      1 => int 6

欢迎分享交流,转载请注明出处:WithCoder » PHP函数preg_split()的使用