lfireboy
(lfireboy)
高级会员

资深会员
UID 13969
精华
0
积分 545
帖子 543
金钱 545 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2002-4-25 来自 GD
状态 离线
|
[原创]中英文字符串处理类
虚拟主机不支持 Multi-Byte String Functions ,没办法,自己写个用用。虽然以前不少人也写过,怎么说自己写的用着才爽
花的时间不多,现在保证能用就行
<?php /** * @ 功能: 对于那些不支持 Multi-Byte String Functions 的 *服务器,可以直接使用此类来达到一些基本的中英文混合字 *符串处理功能 * @作者: Lfireboy [email]Lfireboy@21cn.com[/email] * @最后更新日期: 2004-3-26 * @版本: 1.0.0.0 * @文件: mbstring.class.php */ class mbstring { /** * @功能: 字符串分割 * @方法名: mb_substr() * @参数: $str 输入字符串 * @参数: $start 起始位置,0开始 * @参数: $len 截取长度,默认-1,指从$start位置至字符串结束 * @返回: 字串 */ function mb_substr($str , $start , $len = -1) { preg_match_all("/[\x80-\xff]?./" , $str , $arr); if($len == -1) $len = sizeof($arr[0]) - $start; return @implode(array_slice($arr[0] , $start , $len) , ""); } /** * @功能: 计算字符串长度 * @方法名: mb_strlen() * @参数: $str 输入字符串 * @返回: 长度值 */ function mb_strlen($str) { preg_match_all("/[\x80-\xff]?./" , $str , $arr); return sizeof($arr[0]); } /** * @功能: 指定字符串在原字符串中首次出现的位置 * @方法名: mb_strpos() * @参数: $str 输入字符串 * @参数: $needle 待查找的字符串 * @参数: $offset 起始位置,默认从原字符串头部开始,即0 * @返回: 位置值 */ function mb_strpos($str , $needle , $offset = 0) { $arr = preg_split("/$needle/" , $str); if(1 == sizeof($arr)) $pos = false; else { if(0 == $offset) $pos = $this->mb_strlen($arr[0]); elseif($offset >= $this->mb_strlen($str)) $pos = false; else { $sstr = $this->mb_substr($str , $offset); if($this->mb_strpos($sstr , $needle) === false) $pos = false; else $pos = $offset + $this->mb_strpos($sstr , $needle); } } return $pos; } /** * @功能: 指定字符串在原字符串中最后出现的位置 * @方法名: mb_strrpos() * @参数: $str 输入字符串 * @参数: $needle 待查找的字符串 * @返回: 位置值 */ function mb_strrpos($str , $needle) { $arr = preg_split("/$needle/" , $str); if(1 == sizeof($arr)) $pos = false; else $pos = $this->mb_strlen($str) - $this->mb_strlen($arr[sizeof($arr) - 1]) - $this->mb_strlen($needle); return $pos; } /** * @功能: 指定字符串在原字符串中出现的次数 * @方法名: mb_substr_count() * @参数: $str 输入字符串 * @参数: $needle 待查找的字符串 * @返回: 次数值 */ function mb_substr_count($str , $needle) { preg_match_all("/$needle/" , $str , $arr); return sizeof($arr[0]); } } $ms = new mbstring; $str = '我b们a我我们我b们a我们'; echo $str."<br>"; //输出:我b们a我我们我b们a我们 echo "substr ". $ms->mb_substr($str , 1); //输出:substr b们a我我们我b们a我们 echo "<br>"; echo "strlen ". $ms->mb_strlen($str); //输出:strlen 13 echo "<br>"; echo "strpos ". $ms->mb_strpos($str , 'a我' , 4); //输出:strpos 10 echo "<br>"; echo "strrpos ". $ms->mb_strrpos($str , '我'); //输出:strrpos 11 echo "<br>"; echo "count ".$ms->mb_substr_count($str , '我'); //输出:count 5 echo "<br>"; ?>
|
|