喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [原创]中英文字符串处理类  
 
lfireboy (lfireboy)
高级会员
Rank: 4
资深会员



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(
== sizeof($arr)) $pos false;
        else {
            if(
== $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(
== 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>";
?>
2004-5-15 10:46 PM#1
查看资料  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.028798 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP