PHP split() 分割函数用来返回一个字符串数组,每个单元为 $string 经区分大小写的正则表达式 $pattern 作为边界分割出的子串。
函数原型:
array split (string $pattern, string $string [, int $limit])
PHP split() 分割函数返回一个字符串数组,每个单元为 $string 经区分大小写的正则表达式 $pattern 作为边界分割出的子串,如果设定了$limit,则返回的数组最多包含$limit个单元,而其中最后一个单元包含了$string 中剩余的所有部分。
举一个有关日期分割的例子,解析可能用斜线,点,或横线分割的日期。
例1,
注意,pattern 是一个正则表达式,如果想要用的分割字符是正则表达式中的特殊字符,要先将其转义。
你2,将 /etc/passwd 中的前四个字段分割出来:
如果字符串中有 n 个与 pattern 匹配的项目,则返回的数组将包含 n+1 个单元。例如,如果没有找到 pattern,则会返回一个只有一个单元的数组。当然,如果 string 为空也是这样。
例3,解析可能用斜线,点,或横线分割的日期:
注意:
pattern 是一个正则表达式。如果想要用的分割字符是正则表达式中的特殊字符,要先将其转义。如果觉得PHP函数split()(或其它任何 regex 函数)行为古怪的话,请阅读包含在 PHP 发行包中 regex/ 子目录下的 regex.7 文件。该文件是手册页面格式,可以用类似 man /usr/local/src/regex/regex.7 的命令来阅读。
对一段文字按照字数进行分割,因为文字中可能是中英文混合的,而php函数strlen只能计算出字串的字节数,于是自己实现了几个函数,分享下。
例1,计算字符总长度。
<?php function ccStrLen($str) #计算中英文混合字符串的长度 { $ccLen=0; $ascLen=strlen($str); $ind=0; $hasCC=ereg(”[xA1-xFE]“,$str); #判断是否有汉字 $hasAsc=ereg(”[x01-xA0]“,$str); #判断是否有ASCII字符 if($hasCC && !$hasAsc) #只有汉字的情况 return strlen($str)/2; if(!$hasCC && $hasAsc) #只有Ascii字符的情况 return strlen($str); for($ind=0;$ind<$ascLen;$ind++) { if(ord(substr($str,$ind,1))>0xa0) { $ccLen++; $ind++; } else { $ccLen++; } } return $ccLen; } ?>
例2,从左侧截取字符串。
<?php function ccStrLeft($str,$len) #从左边截取中英文混合字符串 { $ascLen=strlen($str); if($ascLen<=$len) return $str; $hasCC=ereg(”[xA1-xFE]“,$str); #同上 $hasAsc=ereg(”[x01-xA0]“,$str); if(!$hasCC) return substr($str,0,$len); if(!$hasAsc) if($len & 0×01) #如果长度是奇数 return substr($str,0,$len+$len-2); else return substr($str,0,$len+$len); $cind=0;$flag=0;$reallen=0;//实际取字节长 while($cind<$ascLen && $reallen<$len) { //by www.jb200.com if(ord(substr($str,$cind,1))<0xA1){ //如果该字节为英文 则加一 $cind++; }else{//否则 加2个字节 $cind+=2; } $reallen++; } return substr($str,0,$cind); } ?>
例3,把给定文字,按切割数量存入数组(适合短篇文字,长文章可没分隔一部分就直接处理一次)
<?php function SplitContent($content,$smslen){ $str_tmp=$content; $arr_cont=array(); $len_tmp=0; $i=0;//分割绝对位置 while (strlen($str_tmp)>0){ $str_tmp=ccStrLeft($str_tmp,$smslen); array_push($arr_cont,$str_tmp); $i+=strlen($str_tmp); $str_tmp=substr($content,$i,strlen($content)); } return $arr_cont; } //by www.jb200.com ?>
测试:
<?php $str=’a计算中英文混合1234字符串的长度abcd’; echo $str.’的长度为:’.ccStrLen($str); echo ‘<br>’; $smslen=3;//截取长度 print_r(SplitContent($str,$smslen)); ?>
分割结果:
Array
(
[0] => a计算
[1] => 中英文
[2] => 混合1
[3] => 234
[4] => 字符串
[5] => 的长度
[6] => abc
[7] => d
)
您可能感兴趣的文章:
php空格分割文本为数组的例子
php分割中文字符串为数组的简单例子
php split()字符串分割函数应用举例
php分割GBK中文乱码的解决方法
php字符串分割函数explode的例子