分割

chunk_split — 将字符串分割成小块
语法

string chunk_split( string $body[, int $chunklen = 76[, string $end = "\r\n"]] )

描述
  • 将字符串分割成小块。
  • 它会在每 chunklen 个字符后边插入 end
  • 例如将 base64_encode() 的输出转换成符合 RFC 2045 语义的字符串。
参数
参数 描述
body 要分割的字符
chunklen 分割的尺寸
end 行尾序列符号
返回值
  • 返回分割后的字符
举例
// 示例1-指定每段字符的分割长度
$str = chunk_split('abcdefghijklmn',2);
var_dump($str);
// 结果
string(28) "ab cd ef gh ij kl mn "
// 示例2-指定每段字符的分割长度,并指定每段字符的结尾字符
$str = chunk_split('abcdefghijklmn',2,'</br>');
var_dump($str);
// 结果
string(49) "ab
            cd
            ef
            gh
            ij
            kl
            mn
"

str_split — 将字符串转换为数组
语法

array str_split( string $string[, int $split_length = 1] )

描述
  • 将一个字符串转换为数组
参数
参数 描述
string 输入字符串
split_length 一段的长度
返回值
  • 如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块,否则每个字符块为单个字符
  • 如果 split_length 小于 1,返回 FALSE。如果 split_length 参数超过了 string 超过了字符串 string 的长度,整个字符串将作为数组仅有的一个元素返回
举例
// 示例
$str = str_split('abcdefjhijklmn',3);
print_r($str);
// 结果
Array
(
    [0] => abc
    [1] => def
    [2] => jhi
    [3] => jkl
    [4] => mn
)

explode — 使用一个字符串分割另一个字符串
语法

array explode( string $delimiter, string $string[, int $limit] )

描述
  • 此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来
参数
参数 描述
delimiter 边界上的分隔字符
string 输入的字符串
limit 如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。如果 limit 是 0,则会被当做 1
返回值
  • 此函数返回由字符串组成的 array,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来
  • 如果 delimiter 为空字符串(""),explode() 将返回 FALSE
  • 如果 delimiter 所包含的值在 string 中找不到,并且使用了负数的 limit ,那么会返回空的 array,否则返回包含 string 单个元素的数组
举例
// 示例1-一般使用方式
$str = 'ab cd ef gh';
$result = explode(' ',$str);
print_r($result);
// 结果
Array
(
    [0] => ab
    [1] => cd
    [2] => ef
    [3] => gh
)
// 示例2-分隔字符为空字符串,返回FALSE,如果不抑制错误,则提示 Warning: explode(): Empty delimiter 
$str = 'ab cd ef gh';
@$result = explode("",$str);
var_dump($result);
// 结果
bool(false)
// 示例3-指定第三个参数且为正数,限定返回的数组元素个数 
$str = 'ab cd ef gh';
$result = explode(" ",$str,2);
print_r($result);
// 结果
Array
(
    [0] => ab
    [1] => cd ef gh
)
// 示例4-指定第三个参数且为负数,限定返回的数组元素个数,则分割后,删除后面的limit个元素 
$str = 'ab cd ef gh';
$result = explode(" ",$str,-1);
print_r($result);
// 结果
Array
(
    [0] => ab
    [1] => cd
    [2] => ef
)
// 示例5-指定第三个参数且为0,则会被当做 1 
$str = 'ab cd ef gh';
$result = explode(" ",$str,0);
print_r($result);
// 结果
Array
(
    [0] => ab cd ef gh
)

split — 用正则表达式将字符串分割到数组中(PHP7已经被删除了)

preg_split — 通过一个正则表达式分隔字符串
语法

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

描述
  • 通过一个正则表达式分隔给定字符串
参数
参数 描述
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 中的偏移量组成的数组
返回值
  • 返回一个使用 pattern 边界分隔 subject 后得到的子串组成的数组
举例
// 示例1-一般使用方式
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
// 结果
Array
(
    [0] => hypertext
    [1] => language
    [2] => programming
)
// 示例2-限制返回元素个数且为正数
$keywords = preg_split("/[\s,]+/", "hypertext language, programming",2);
print_r($keywords);
// 结果
Array
(
    [0] => hypertext
    [1] => language, programming
)
// 示例3-限制返回元素个数且limit等于0,-1或者null,结果都是不限制
$keywords = preg_split("/[\s,]+/", "hypertext language, programming two",-1);
print_r($keywords);
// 结果
Array
(
    [0] => hypertext
    [1] => language
    [2] => programming
    [3] => two
)
// 示例3-限制返回元素个数且limit<=-2,则只会返回一个元素,即返回原字符串的数组
$keywords = preg_split("/[\s,]+/", "hypertext language, programming two",-2);
print_r($keywords);
// 结果
Array
(
    [0] => hypertext language, programming two
)
// 示例4-不设置标记
$str = 'string';
$chars = preg_split('//', $str, -1);
print_r($chars);
// 结果
Array
(
    [0] => 
    [1] => s
    [2] => t
    [3] => r
    [4] => i
    [5] => n
    [6] => g
    [7] => 
)
// 示例5-设置flag标记PREG_SPLIT_NO_EMPTY
$str = 'string';
$chars = preg_split('//', $str, -1,PREG_SPLIT_NO_EMPTY);
print_r($chars);
// 结果
Array
(
    [0] => s
    [1] => t
    [2] => r
    [3] => i
    [4] => n
    [5] => g
)
// 示例6-设置flag标记PREG_SPLIT_OFFSET_CAPTURE
$keywords = preg_split("/[\s,]+/", "hypertext language, programming, ,two",null,PREG_SPLIT_OFFSET_CAPTURE);
print_r($keywords);
// 结果
Array
(
    [0] => Array
        (
            [0] => hypertext
            [1] => 0
        )

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

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

    [3] => Array
        (
            [0] => two
            [1] => 34
        )

)

mb_split — 使用正则表达式分割多字节字符串
语法

array mb_split( string $pattern, string $string[, int $limit = -1] )

描述
  • 使用正则表达式 pattern 分割多字节 string 并返回结果 array
  • limit如果是0或者null,则被认为是1
  • limit如果是<=-1,则表示不限制返回元素个数
参数
参数 描述
pattern 正则表达式
string 待分割的字符串
limit 如果指定了可选参数 limit,将最多分割为 limit 个元素
返回值
  • 分割后的数组
举例
// 示例1-一般使用
$result = mb_split(',','中华,人民,共和国');
print_r($result);
// 结果
Array
(
    [0] => 中华
    [1] => 人民
    [2] => 共和国
)
// 示例2-限制元素个数,且值为0,null或者-1,则被认为是1
$result = mb_split(',','中华,人民,共合国',1);
print_r($result);
// 结果
Array
(
    [0] => 中华,人民,共合国
)
// 示例3-限制元素个数,且值<=-1,则不限制元素个数
$result = mb_split(',','中华,人民,共合国',-10);
print_r($result);
// 结果
Array
(
    [0] => 中华
    [1] => 人民
    [2] => 共合国
)

wordwrap — 打断字符串为指定数量的字串
语法

string wordwrap( string $str[, int $width = 75[, string $break = "\n"[, bool $cut = false]]] )

描述
  • 使用字符串断点将字符串打断为指定数量的字串
参数
参数 描述
str 输入字符串
width 列宽度
break 使用可选的 break 参数打断字符串
cut 如果 cut 设置为 TRUE,字符串总是在指定的宽度或者之前位置被打断。因此,如果有的单词宽度超过了给定的宽度,它将被分隔开来
返回值
  • 返回打断后的字符串
举例
// 示例1-指定列宽度,这个width只是一个参考值,前提是保证单词的完整性
$text = "The quick brown fox jumped over the lazy dog.";
$newtext = wordwrap($text, 20, "<br />\n");
echo $newtext;
// 结果
The quick brown fox
jumped over the lazy
dog.
// 示例2-指定列宽度,并且指定cut参数为true,则不会保证单词的完整性,字符串总是在指定的宽度或者之前位置被打断
$text = "A very long woooooooooooord.";
$newtext = wordwrap($text, 8, "<br />\n", true);
echo $newtext;
// 结果
A very
long
wooooooo
ooooord.

strtok — 标记分割字符串
语法
  • string strtok( string $str, string $token)
  • string strtok( string $token)
描述
  • strtok() 将字符串 str 分割为若干子字符串,每个子字符串以 token 中的字符分割。这也就意味着,如果有个字符串是 "This is an example string",你可以使用空格字符将这句话分割成独立的单词
  • 注意仅第一次调用 strtok 函数时使用 string 参数。后来每次调用 strtok,都将只使用 token 参数,因为它会记住它在字符串 string 中的位置
  • 如果要重新开始分割一个新的字符串,你需要再次使用 string 来调用 strtok 函数,以便完成初始化工作。注意可以在 token 参数中使用多个字符。字符串将被该参数中任何一个字符分割。
参数
参数 描述
str 被分成若干子字符串的原始字符串
token 分割 str 时使用的分界字符
返回值
  • 标记后的字符串
举例
// 示例
$result = strtok('this is an example',' ');
echo $result.'</br>';
$result = strtok(' ');
echo $result.'</br>';
$result = strtok(' ');
echo $result.'</br>';
$result = strtok(' ');
echo $result.'</br>';
// 结果
this
is
an
example

results matching ""

    No results matching ""