本文将是近期关于字符串学习的最后一篇,本篇主要总结下字符串分隔的几个函数explode、split、preg_split、chunk_split、wordwrap 的用法区别和示例。

一、explode

explode是以上几个分隔函数里最简单也最常用的一个,其一共包含三个参数。具体语法如下explode(separator,string,limit)

其参数意义为:

参数 描述
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的最大数目。

注:如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分;如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素;如果 limit 是 0,则会被当做 1。

示例:

1<?php
2$str = 'one|two|three|four';
3// 正数的 limit
4print_r(explode('|', $str, 2));
5// 负数的 limit(自 PHP 5.1 起)
6print_r(explode('|', $str, -1));
7?>

二、split

split — 用POSIX正则表达式将字符串分割到数组中,其语法中也是使用三个参数,为:

1array split ( $pattern , $string [, $limit ] )

参数说明和explode基本一致,如果设定了 limit,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则 split() 返回 FALSE。示例:

 1<?php
 2list($user, $pass, $uid, $gid, $extra) =
 3    split (":", $passwd_line, 5);
 4?>
 5<?php
 6// 分隔符可以是斜线,点,或横线
 7$date = "04/30/1973";
 8list($month, $day, $year) = split ('[/.-]', $date);
 9echo "Month: $month; Day: $day; Year: $year<br />n";
10?>

注:preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比 split() 更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费。

三、preg_split

preg_split — 通过一个正则表达式分隔字符串,其有四个参数,语法结构为:

1array preg_split( string pattern, string subject [, int limit [, int flags]] )

参数说明:

参数 说明
pattern 正则表达式
subject 需要匹配分割的对象
limit 可选,如果指定了 limit ,则最多返回 limit 个子串,如果 limit 是 -1,则意味着没有限制,可以用来继续指定可选参数 flags
flags 设定 limit 为 -1 后可选,可以是下列标记的任意组合(用按位或运算符 | 组合): 1. PREG_SPLIT_NO_EMPTY:preg_split() 只返回非空的成分 2.PREG_SPLIT_DELIM_CAPTURE:定界符模式中的括号表达式也会被捕获并返回 3.PREG_SPLIT_OFFSET_CAPTURE:对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。

示例:

 1<?php
 2$str = "php mysql,apache ajax";
 3$keywords = preg_split("/[s,]+/", $str);
 4print_r($keywords);
 5?>
 6<?php
 7$str = 'string';
 8$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
 9print_r($chars);
10?>
11<?php
12$str = "php mysql,apache ajax";
13$keywords = preg_split("/[s,]+/", $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
14print_r($keywords);
15?>

四、chunk_split

chunk_split() 函数把字符串分割为一连串更小的部分。其语法结构为:chunk_split(string,length,end),参数为:

参数 描述
string 必需。规定要分割的字符串。
length 可选。一个数字,定义字符串块的长度。
end 可选。字符串值,定义在每个字符串块之后放置的内容。

注:本函数不改变原始字符串。

示例1:

1<?php
2$str = "Hello world!";
3echo chunk_split($str,1,".");
4?>
5输出:
6H.e.l.l.o. .w.o.r.l.d.!.

例2:

1<?php
2$str = "Hello world!";
3echo chunk_split($str,6,"...");
4?>
5输出:
6Hello ...world!...

五、wordwrap

wordwrap() 函数按照指定长度对字符串进行折行处理。 如果成功,则返回折行后的字符串。如果失败,则返回 false。

语法:wordwrap(string,width,break,cut)
参数:

参数 描述
string 必需。规定要进行折行的字符串。
width 可选。规定最大行宽度。默认是 75。
break 可选。规定作为分隔符使用的字符(字串断开字符)。默认是 “n”。
cut 可选。规定是否对大约指定宽度的单词进行折行。默认是 FALSE (no-wrap)。

示例:

1<?php
2$text = "The quick brown fox jumped over the lazy dog.";
3$newtext = wordwrap($text, 20, "<br />n");
4echo $newtext;
5?>